【发布时间】:2015-06-08 15:32:47
【问题描述】:
我的应用程序应该启动一个外部程序来开始录制桌面。 我正在使用一个简单的程序:recordmydesktop。 使用 ProcessBuilder 启动程序可以正常工作。
我的主要问题是我必须停止录制。但我无法再访问该程序了。
我的第一个想法是从 java 启动一个终端:bash 没有保持打开状态,但 xterm 工作。首先我想知道为什么 bash shell 一直处于打开状态?
那么,我想查找:如何不使用xterm,仍然可以停止录制过程?例如:向进程发送停止信号(Ctrl C)。
这里是一些示例代码:
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 打开而不是两个。我创建了一个不应该发生的循环。这与我的问题无关,但如果有人知道原因,我很想知道为什么。
感谢您的帮助!
【问题讨论】:
标签: java shell process java-io xterm