Runtime.getRuntime().exec()进程阻塞问题

来源:互联网 发布:淘宝店地区怎么修改 编辑:程序博客网 时间:2024/05/17 00:55

        我在前台页面里通过链接调用后台java代码Runtime.getRuntime().exec来启动Linux中的一个服务后,过一小会服务就会失灵。而在shell中直接启动的话,没有问题。网上找到了原因,是因为没有对Process的输出信息及时清理导致进程阻塞,服务失效。于是,在Runtime.getRuntime().exec()之后,p.waitFor()之前加入如下线程代码:
ServiceStreamGobbler ssgError = new ServiceStreamGobbler(p.getErrorStream(), "Error");
ServiceStreamGobbler ssgOutput = new ServiceStreamGobbler(p.getInputStream(), "Output");
ssgError.start();
ssgOutput.start();
线程中将输出信息流重定向到文件,问题解决。