我是Java新手。我想使用命令如何通過runTime.exec()使用涉及「>」的linux命令()
"ps -e > /home/root/workspace/MyProject/ProcessList.txt"
with runTime.exec();
通過網絡搜索,我開始知道runTime.exec()不支持管道或重定向。請讓我知道如何使用我的Java代碼執行此命令。請給出確切的答案。
我是Java新手。我想使用命令如何通過runTime.exec()使用涉及「>」的linux命令()
"ps -e > /home/root/workspace/MyProject/ProcessList.txt"
with runTime.exec();
通過網絡搜索,我開始知道runTime.exec()不支持管道或重定向。請讓我知道如何使用我的Java代碼執行此命令。請給出確切的答案。
管道和重定向是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);
你可以看看這個問題:Input and Output Stream Pipe in Java
否則,如果你知道你是支持的Bourne shell(sh
)的平臺上,你可以添加到命令運行原始命令在外殼:
"sh -c 'ps -e > /home/root/workspace/MyProject/ProcessList.txt'"
沒有運氣,它也:( –
所以你說這應該是這樣的: run.exec(「/ bin/sh的-c「ps的-e> /首頁/根/工作區/ MyPro JECT/ProcessList.txt'「); ???? –
@IngilaEjaz的確如此。編輯澄清。 – kmkaplan
我嘗試了我在評論中寫的內容,但它不起作用:( –