我想创建一个用于处理linux终端应用程序(sipp)的java程序。
我可以用这种方式用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();
刷新这些命令后,我可以看到输出中每秒呼叫次数增加。但是在刷新命令结束后终端再次停止工作。
我认为换行有什么问题,因为当我发送
时 printWriter.print("*");
命令,没有任何反应。
也许重要的是要知道,sipp每秒都会更新终端,并且只允许输入pq / * - +和1-9,并且您无法看到输入,输入将是直接执行。
我希望有人可以帮助我! 非常感谢!