0

我是 Java 新手。我想使用命令

"ps -e > /home/root/workspace/MyProject/ProcessList.txt" 

与 runTime.exec();

在网上搜索时,我知道 runTime.exec() 不支持管道或重定向。请让我知道如何使用我的 Java 代码执行此命令。请给出准确答案。

4

2 回答 2

1

管道和重定向是 shell 提供的功能。简单(且肮脏)的解决方案是在 shell 中生成命令:"/bin/sh -c 'ps -e > /home/root/workspace/MyProject/ProcessList.txt'".

编辑:我忘记了默认值StringTokenizer不适用于带引号的字符串。以字符串数组的形式提供参数。

String[] args = {
    "/bin/sh",
    "-c",
    "ps -e > /home/root/workspace/MyProject/ProcessList.txt"
};
java.lang.Runtime.getRuntime(args);
于 2012-12-02T16:35:30.050 回答
0

你可以看看这个问题:Java 中的输入和输出流管道

否则,如果您知道自己在支持 bourne shell ( sh) 的平台上,则可以将其添加到命令中以在该 shell 中运行原始命令:

"sh -c 'ps -e > /home/root/workspace/MyProject/ProcessList.txt'"

于 2012-12-02T16:36:55.097 回答