Java 终端命令赢得';t打印
我有一个在Mac终端中调用特定命令的代码,然后我使用缓冲读取器从终端读取并打印结果。我一直在用几个命令来实现这一点,唯一的问题是我现在需要使用命令Java 终端命令赢得';t打印,java,macos,terminal,command,bufferedreader,Java,Macos,Terminal,Command,Bufferedreader,我有一个在Mac终端中调用特定命令的代码,然后我使用缓冲读取器从终端读取并打印结果。我一直在用几个命令来实现这一点,唯一的问题是我现在需要使用命令ps-ef | grep google(程序名当然不同,但现在我只使用google)。使用此命令的唯一问题是,缓冲读取器似乎无法读取和打印结果。我100%确信实际的命令是有效的,因为我已经尝试在终端中单独运行该命令。我不太清楚为什么这个问题现在突然发生了 该命令用于检查特定应用程序是否正在运行以及从何处启动 我使用的代码如下所示 try {
ps-ef | grep google
(程序名当然不同,但现在我只使用google)。使用此命令的唯一问题是,缓冲读取器似乎无法读取和打印结果。我100%确信实际的命令是有效的,因为我已经尝试在终端中单独运行该命令。我不太清楚为什么这个问题现在突然发生了
该命令用于检查特定应用程序是否正在运行以及从何处启动
我使用的代码如下所示
try {
String procss;
Process pRun = Runtime.getRuntime().exec("ps -ef | grep google");
BufferedReader input = new BufferedReader(new InputStreamReader(pRun.getInputStream()));
while ((procss = input.readLine()) != null) {
if(!procss.contains("Contents"))
{
//Do something
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
为了给出一个命令的示例,它可以毫无问题地工作,我在下面还包括了一个工作代码。显示我希望它实际如何工作,但只需使用正确的命令ps-ef | grep google
try {
String procss;
Process pRun = Runtime.getRuntime().exec("top -F -R -o cpu");
BufferedReader input = new BufferedReader(new InputStreamReader(pRun.getInputStream()));
while ((procss = input.readLine()) != null) {
if(!procss.contains("testApplication"))
{
//Do something
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
我不确定是否需要使用另一种读取结果的方法,或者我必须做些什么才能使代码真正再次工作 可能的重复实际上正如上面的链接中所提到的,这只是因为您没有使用Runtime.exec运行shell,您正在生成一个进程非常感谢您的输入,我使用了重复问题的第二个答案。非常感谢您的帮助!