【发布时间】:2015-05-11 14:47:24
【问题描述】:
我对 Java 的进程对象有疑问。
我想打开名为 linphonec.exe 的进程来拨打电话,在这个进程中我必须插入一些命令行来拨打电话,接听...
当我必须插入多个命令行时出现问题,因为当我调用 OutputStream 的 close() 方法时,Process 的 OutputStream 只接受一个命令行。如果我不调用此方法,则不会执行命令行。
我想执行多个命令但我不能。
例子:
“拨打电话”然后“终止”以随时结束通话。
但我只能插入第一个命令行,如果我不使用 close() 方法,则不会执行命令行。
代码:
启动一个进程:
ProcessBuilder builder = new ProcessBuilder(PROCESS);
builder.redirectErrorStream(true);
Process p = builder.start();
读取Process的InputStream:
InputStream i = p.getInputStream();
System.out.print((char)i.read());
while(i.available() > 0){
System.out.print((char)i.read());
}
在 OutputStream 中插入命令行:
String command = com.nextLine();
OutputStream o = p.getOutputStream();
o.write(comando.getBytes());
o.flush();
o.close();
如果我删除“o.close()”,则不会执行命令行,但如果我执行它,我将无法执行其他命令行。
我在我的程序上尝试了代码,但是当我插入命令行时,我没有看到该进程的下一个信息。
当我输入你的代码时:
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> Registration on sip:XX.XX.XX.XX successful.
linphonec> call XXX
以我的代码为例:
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> Registration on sip:XX.XX.XX.XX successful.
linphonec> call XXX
Establishing call id to sip:XXX@XX.XX.XX.XX, assigned id 1
With "Available > 0" I get "Establishing call id to sip:XXX@XX.XX.XX.XX, assigned id 1".
如果我使用这个循环,我看不到进程的其他信息。
我认为问题是在我执行 Close 方法之前,输出流没有获取命令行。
谢谢。
对不起,我的英语不好。
【问题讨论】:
标签: java netbeans process outputstream linphone