Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java处理linux终端应用_Java_Linux_Bash_Opensuse - Fatal编程技术网

用java处理linux终端应用

用java处理linux终端应用,java,linux,bash,opensuse,Java,Linux,Bash,Opensuse,我想创建一个java程序来处理linux终端应用程序(sipp) 我可以通过以下方式使用bash启动此应用程序: proc = Runtime.getRuntime().exec("/bin/bash", null, wd); BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); OutputStream outputStream = proc.getOutputS

我想创建一个java程序来处理linux终端应用程序(sipp)

我可以通过以下方式使用bash启动此应用程序:

proc = Runtime.getRuntime().exec("/bin/bash", null, wd);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
       OutputStream outputStream = proc.getOutputStream();
       OutputStreamWriter outputStreamWriter = new OutputStreamWriter(proc.getOutputStream());
       BufferedWriter buffered = new BufferedWriter(outputStreamWriter);
       PrintWriter printWriter = new PrintWriter(buffered, true);
       printWriter.println("cd ../***/sipp/sipp-3.3/");
       printWriter.println("./sipp -i "+Config.IP+" -sf uac.xml "+Config.IP+":5060");
默认情况下,sipp脚本每秒向服务器发送10个呼叫。如果在终端内启动此应用程序,则可以使用“/”*“-”+”增加或减少每秒的呼叫数

现在我想每秒有50个电话,所以我必须输入*四次。但是如果我使用

 printWriter.println("*");
终端停止工作,等待命令关闭

因此,我尝试将*字符与输出流一起发送:

           outputStream.write("*".getBytes());
       outputStream.write("*".getBytes());
       outputStream.write("*".getBytes());
       outputStream.write("*".getBytes());
       outputStream.flush();
刷新这些命令后,我可以在输出中看到每秒调用次数的增加。但在flush命令结束后,终端再次停止工作

我觉得换行有什么问题,因为当我发送

 printWriter.print("*");
命令,什么也没发生

可能需要知道的是,sipp每秒更新一次终端,只允许输入pq/*-+和1-9,并且您无法看到您的输入,并且您的输入将直接执行

我希望有人能帮助我!
非常感谢

你真的在使用
outputStream.write(“*”.getBytes())
而不是
outputStream.write('*')?不管怎样,您也从其他流中读取数据吗?是的,我正在使用,
outputStream.write(“*”.getBytes())在另一个线程中,我一直在从输入流读取数据。我仍然没有得到您的问题描述:“在刷新这些命令后,我可以在输出中看到每秒调用数的增加。但是在刷新命令结束后,终端再次停止工作。”那么,您什么时候能看到预期效果,终端什么时候停止工作?两个线程同时打印?另一个线程会一直打印从BufferedReader到我的控制台的任何收入。在控制台中,我可以看到下一次打印时的呼叫速率是每秒10次呼叫,是每秒20次呼叫。。。直到每秒50个电话。然后终端完全停止工作。然后我从服务器上得到一些空行,就这样。因此,我认为当我调用
outputStream.flush()时,终端停止了
同样非常奇怪的是,每次打印的总时间是0.00秒,并且没有呼叫服务器。当我不发送任何命令时,它可以正常工作,每秒调用10次。这没有任何意义,没有
刷新
就不会传输任何数据。当您收到确认输入时,刷新已被完全处理。而问题恰恰是由你在冲水后所做的事情引起的。您的阅读代码也可能已损坏。