终端命令不会打印

时间:2017-03-11 17:54:37

标签: java macos terminal command bufferedreader

我有一个代码调用Mac终端中的特定命令,然后使用缓冲读取器从终端读取和打印结果。我一直在用几个命令做这个,唯一的问题是我现在需要使用命令ps -ef | grep 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();
            }

我不确定是否需要使用另一种方法来阅读结果或我需要做些什么来让我的代码再次实际工作。

0 个答案:

没有答案