【发布时间】:2015-08-10 08:33:18
【问题描述】:
我遇到需要从 .jar 执行 UNIX 命令的情况。我已经尝试了以下(日期是任意的):
java.lang.Runtime rt = java.lang.Runtime.getRuntime();
java.lang.Process p = rt.exec("sudo date --set=\"Tue Aug 11 10:10:20 BST 2015\"");
p.waitFor();
logger.log("executed with value: " + p.exitValue());
我只是想知道在这种情况下是否有办法检查退出代码?
注意:我以这种方式执行了一个命令,即“sudo mkdir -p /root/abcd”,它确实有效。
【问题讨论】:
-
有什么问题? exitValue 确实返回退出代码。
-
要调试问题,您可能需要读取并显示程序的输出,这些输出通过您可以使用 getInputStream() 和 getErrorStream() 检索的流传递给您的 java 程序。如果 sudo 要求输入密码,我不会感到惊讶。
-
@Eelke sudo 不要求输入密码,这让我很担心。
-
“检查退出代码”是什么意思? 0 值表示进程正确终止。任何其他值都意味着不成功的终止。