Runtime.getRuntime().exec()进程阻塞问题
我在前台页面里通过链接调用后台java代码Runtime.getRuntime().exec来启动Linux中的一个服务后,过一小会服务就会失灵。而在shell中直接启动的话,没有问题。网上找到了原因,是因为没有对Process的输出信息及时清理导致进程阻塞,服务失效。于是,在Runtime.getRuntime().exec()之后,p.waitFor()之前加入如下线程代码:S
·
我在前台页面里通过链接调用后台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();
线程中将输出信息流重定向到文件,问题解决。
更多推荐
已为社区贡献1条内容
所有评论(0)