我的应用程序应启动外部程序以开始录制桌面。 我正在使用一个简单的程序:recordmydesktop。 使用ProcessBuilder启动程序可以正常工作。
我的主要问题是我必须停止录制。但我再也无法访问该程序了。
我的第一个想法是从java启动终端:bash没有保持打开但xterm工作。首先,我想知道为什么bash shell保持打开状态?
然后,我想找到:我怎么能不使用xterm并且仍然可以停止录制过程?例如:发送停止信号(Ctrl C)到进程。< / p>
以下是一些示例代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class hh {
public static void main(String[] args) {
try {
Process process = new ProcessBuilder(new String[]{"/usr/bin/xterm" ,"recordmydesktop"}).start();
InputStream processIS = process.getInputStream();
InputStreamReader processISR = new InputStreamReader(processIS);
BufferedReader processBR = new BufferedReader(processISR);
String line;
System.out.println("Output of the record process is: ");
while ((line=processBR.readLine())!=null){
System.out.print(line);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
此外,在此代码中,我无法获得任何回送。所以我的程序不知道recordmydesktop是否正常。
Ps:如果你启动:
Process process = new ProcessBuilder(new String[]{"/usr/bin/xterm" ,"xterm"}).start();
许多xterm打开而不是两个。我创建了一个不应该发生的循环。这与我的问题无关,但如果有人知道我很想知道原因的原因。
感谢您的帮助!
答案 0 :(得分:1)
您可以通过输出流向流程发送命令。
Process process ;
String command = "some command" ;
process.getOutputStream().writeBytes( command.getBytes() ) ;