Tra*_*ker 21 java process apache-commons-exec
我试图决定是否使用ProcessBuilder或Commons exec,
我的要求是我只是想创建一个守护进程,其stdout/stdin/stderr我并不关心.另外,我希望在时机成熟时执行kill来销毁这个进程.
我在Linux上使用Java.
我知道两者都有他们的痛苦和陷阱(例如确保使用单独的线程吞下流可能导致阻塞或死锁,并关闭流,以免留下打开的文件)并想知道是否有人有建议方式或其他方式以及任何良好的资源.
的ZT处理执行库是Apache的百科全书Exec的一种替代方法.它具有运行命令,捕获输出,设置超时等功能.
我还没有使用它,但它看起来相当充分.
文档中的示例:执行命令,将stderr泵入记录器,将输出返回为UTF8字符串.
String output = new ProcessExecutor().command("java", "-version")
.redirectError(Slf4jStream.of(getClass()).asInfo())
.readOutput(true).execute()
.outputUTF8();
Run Code Online (Sandbox Code Playgroud)
其文档列出了Commons Exec的以下优点:
commons-exec不是我用过的最好的库,但它确实解决了Java进程调用中最大的陷阱,即正确处理/使用stdout/sterr.我过去曾经使用过ProcessBuilder,这很好,现在也是commons-exec,它也很好,很容易处理大多数常见情况.
| 归档时间: |
|
| 查看次数: |
7144 次 |
| 最近记录: |