用java处理linux终端应用程序

时间:2013-11-19 12:50:27

标签: java linux bash opensuse

我想创建一个用于处理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,并且您无法看到输入,输入将是直接执行。

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

0 个答案:

没有答案