次を使用してbashターミナルのインスタンスを呼び出すコードがあります-
proc = Runtime.getRuntime().exec("/bin/bash", null, working-dir);
次に、呼び出された bash のインスタンスで unix コマンドを実行するために、次のような PrintWriter オブジェクトを使用しています --
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
次に、PrintWriter オブジェクトを使用して、次の方法で実際にコマンドを実行しています。
out.println("pwd");
out.println("ls >a.txt");
どちらのコマンドも問題なく動作しているように見えますが、ユーザー入力に基づいてコマンドを作成する場合に問題があります。具体的に言うと、いくつかのファイルをネットワーク上のプリンターに送信するコマンドを作成しており、次のように実行しています-
while ((strLine = br.readLine()) != null) {
cmd= blah +blah +blah;//Construction of the command
out.println(cmd);
}
上記のコードで実際に起こっていることは、印刷する必要があるすべてのファイルを含むファイルから br を読み取っていて、ファイル名を持つ文字列がコマンドに入り、それを PrintWriter オブジェクトに書き込むことです。
私が直面している問題は、ある種のキューイングが発生していると思います.PrintWriterオブジェクトは、コマンドが構築されるたびに、呼び出されたbashインスタンスに実際にコマンドを渡していません. したがって、1 日の終わりに、40 個のコマンドが構築されている場合、約 16 ~ 18 個のドキュメントのみが印刷されます。すべてのコマンドを一度にプリンターに送信しているため、損失が発生していると思われます。この損失をなくしたいと考えています。
ポインタはありますか??
ありがとう