j'ai un morceau de code qui appelle une instance de la borne de bash par l'utilisation de ce qui suit -Java.lang.Runtime
proc = Runtime.getRuntime().exec("/bin/bash", null, working-dir);
et ensuite pour exécuter des commandes UNIX sur cette instance de bash appelé I « utilise un objet PrintWriter comme celui-ci -
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
Je suis alors en utilisant l'objet PrintWriter pour exécuter effectivement les commandes dans le fashion-- suivant
out.println("pwd");
out.println("ls >a.txt");
Bien que les deux commandes semblent fonctionner parfaitement, j'ai un problème dans le cas où je construis une commande basée sur une entrée utilisateur. Être précis, je suis la construction d'une commande pour envoyer des fichiers à une imprimante sur le réseau et je le fais comme ça -
while ((strLine = br.readLine()) != null) {
cmd= blah +blah +blah;//Construction of the command
out.println(cmd);
}
Qu'est-ce qui se passe réellement dans le morceau de code ci-dessus est que br est lire à partir d'un fichier qui contient tous les fichiers qui doivent être imprimés, puis la chaîne ayant le nom du fichier va dans la commande et je l'écris sur l'objet PrintWriter.
Le problème auquel je suis confronté est que, je suppose qu'il y a une sorte de mise en file d'attente et que l'objet PrintWriter ne passe pas la commande à l'instance bash invoquée chaque fois qu'une commande est construite. Ainsi, à la fin de la journée, si 40 commandes sont en cours de construction, seuls 16 à 18 documents sont en cours d'impression. Je suppose que c'est parce qu'il envoie toutes les commandes à l'imprimante en une seule fois résultant de la perte. Je veux éliminer cette perte.
Des pointeurs?
Merci p1nG
dépend si l'utilisateur exécute ce sudo ou non. – ping