加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java中捕获shell命令的退出状态?

发布时间:2020-12-15 02:56:09 所属栏目:Java 来源:网络整理
导读:我正在为我的CSVreader创建一个Junit测试文件.我正在阅读CSV文件的内容并将内容写入另一个文件.我想使用diff实用程序比较它们,我想使用diff的退出状态来知道内容是否相同.一般是$?给出退出状态,但我不知道如何捕获它并在我的代码中使用它.谁可以在这方面帮
我正在为我的CSVreader创建一个Junit测试文件.我正在阅读CSV文件的内容并将内容写入另一个文件.我想使用diff实用程序比较它们,我想使用diff的退出状态来知道内容是否相同.一般是$?给出退出状态,但我不知道如何捕获它并在我的代码中使用它.谁可以在这方面帮助我?

这就是我的代码看起来的样子

boolean hasSameContents = false;

    command="diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName;
    p= Runtime.getRuntime().exec(command);
    p.waitFor();

在此之后我想获得退出状态并在if这样的条件下使用它

if(exit_status==0)
     hasSameContents = true;
  else
     hasSameContents = false;

甚至其他建议也很受欢:)

解决方法

你在找 Process#exitValue
String command = "diff "+mp.get("directory")+"/"+fileName+" "+mp.get("outdir")+"/"+fileName;
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
int exitStatus = p.exitValue();

不要忘记,你应该读取InputStream的内容,即使你不在乎,有些进程会在读取输出缓冲区之前阻塞(不完成)…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读