Java 终端命令赢得';t打印

Java 终端命令赢得';t打印,java,macos,terminal,command,bufferedreader,Java,Macos,Terminal,Command,Bufferedreader,我有一个在Mac终端中调用特定命令的代码,然后我使用缓冲读取器从终端读取并打印结果。我一直在用几个命令来实现这一点,唯一的问题是我现在需要使用命令ps-ef | grep google(程序名当然不同,但现在我只使用google)。使用此命令的唯一问题是,缓冲读取器似乎无法读取和打印结果。我100%确信实际的命令是有效的,因为我已经尝试在终端中单独运行该命令。我不太清楚为什么这个问题现在突然发生了 该命令用于检查特定应用程序是否正在运行以及从何处启动 我使用的代码如下所示 try {

我有一个在Mac终端中调用特定命令的代码,然后我使用缓冲读取器从终端读取并打印结果。我一直在用几个命令来实现这一点,唯一的问题是我现在需要使用命令
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,您正在生成一个进程非常感谢您的输入,我使用了重复问题的第二个答案。非常感谢您的帮助!