重複の可能性:
標準コマンドにせずに文字列を端末に送信する方法は?
このトピックに関する質問を既に投稿しましたが、しばらくしてもまだ問題が解決されていません。Marko Topolnik はいくつかの可能な回答を示してくれましたが、まだブロックされています。
ここに私の問題があります:
ある時点で、外部プログラムに接続する必要がある Java プログラムがあります。そのために、次の関数を実装しました。
public void login(String password) throws IOException
{
final Process p = Runtime.getRuntime().exec("p4 login");
final BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println("going to read line");
System.out.println(in.read());
System.out.println("read line");
new PrintWriter(p.getOutputStream(),true).println(password);
System.out.println("password sent");
String line;
while ((line = in.readLine()) != null)
{
System.out.println("printing line");
System.out.println(in.read());
System.out.println(line);
System.out.println("printed line");
if (line.startsWith("User")) loggedIn=true;
}
loggedIn=false;
}
この関数は、「p4 login」を端末に正常に送信します。この時点での端末からの応答は、「Enter Password:」です。
次に、パスワードを端末に送信しようとしましたが、送信する方法が見つかりませんでした。初めてと同じコマンドを使ってみましたが、exec コマンドは標準コマンドしか送信できません。
これは私の最初の投稿の問題でした: exec() コマンドでパスワードを送信していたので、試してみました
new PrintWriter(p.getOutputStream()).println(password);
System.out.println; 私の関数では常に「Enter Password:」と表示されますが、これは私が探しているものではありません。
以前の投稿で提案された出力をフラッシュしようとしましたが、最初のコマンドが送信されてから2番目のコマンドが送信されるまでしばらく待ちますが、まだ何もありません。
誰かが私がそのようなことができる方法を知っていれば、それは素晴らしいことです.