您的位置 首页 java

使用Java调用Shell脚本时的死锁陷阱

Java 一般使用 Runtime .getRuntime(). exec () 或者 ProcessBuilder 调用外部脚本:

使用Java调用Shell脚本时的死锁陷阱

Java

需要注意的是,这里 stream 的方向是相对于主程序的,所以 getInputStream() 就是子进程的输出,而 getOutputStream()
是子进程的输入。

基于同样的 Buffer 原因,假如调用了 waitFor 方法等待子进程执行完毕而没有及时处理输出的话,就会造成 死锁 由于 Java API 很少变动,所以没有像 Python 那样提供新的 run 方法。

Java

但其中的思想和 Python 都是统一的,就是在后台开启新 线程 读取子进程的输出,防止 Buffer 写满。

另一个统一思想的地方就是,都推荐使用数组或 list 将输入的 shell 命令分隔成多段,这样的话就由系统来处理空格等特殊字符问题。

Java

文章来源:智云一二三科技

文章标题:使用Java调用Shell脚本时的死锁陷阱

文章地址:https://www.zhihuclub.com/179555.shtml

关于作者: 智云科技

热门文章

网站地图