私は仕事のためにターミナルコマンドを使用する必要があるJavaでプログラムを書いています。 My機能は、基本的に次のようになります。ここでは文字列を標準コマンドにすることなく端末に送信するにはどうすればよいですか?
public void sendLoginCommand() throws IOException
{
System.out.println("\n------------Sending Login Command------------\n");
String cmd="qskdjqhsdqsd";
Runtime rt = Runtime.getRuntime();
Process p=rt.exec(cmd);
}
public Process sendPassword(String password) throws IOException
{
System.out.println("\n------------Sending Password------------\n");
String cmd=password;
Runtime rt = Runtime.getRuntime();
Process p=rt.exec(cmd);
return p;
}
public void login(String password) throws IOException
{
sendLoginCommand();
Process p = sendPassword(password);
System.out.println("\n------------Reading Terminal Output------------\n");
Reader in = new InputStreamReader(p.getInputStream());
in = new BufferedReader(in);
char[] buffer = new char[20];
int len = in.read(buffer);
String s = new String(buffer, 0, len);
System.out.println(s);
if(s.equals("Password invalid.")) loggedIn=false;
else loggedIn=true;
}
、プログラムはP4 loginコマンド番目正しく送信し、その後、端末はパスワードの入力を要求します。 sendLoginCommand()と同じ行を使用すると、プログラムはエラーを返します。明らかに、我々はProcessを通して標準的なコマンドだけを送ることができます。 私は誰かが
があなたの当面の問題は、あなたが呼び出している「コマンド」のそれぞれに別々のプロセスを開始していることである事前
実際には、ログインを使用してプロセスを起動しようとしていて、コマンドとしてパスワードを使用してプロセスを開始しようとしています –
いいえ、ここでは、 "main"関数はlogin()です。まず、sendlogincommand()を呼び出します。 )は正常にコマンドを送信しますが、次のsendpassword()関数が呼び出されたときには、コマンドではないのでパスワードを送信できません。また、 "qsdqsdsdkqsdq"コマンドがコマンドではないと言うかもしれませんが、それは本当です。元のコマンドは "p4 login" – Mtrompe
でした。そこには競合はありません。 –