【发布时间】:2015-02-13 10:42:57
【问题描述】:
当我启动时
io.Process.start(
'~/google_cloud_datastore_dev_server/gcd-v1beta2-rev1-2.1.1/gcd.sh')
.then((process) {
new Future.delayed(new Duration(seconds: 10), () => process.kill());
});
有了Process.start,我得到了两个新进程(gcd.sh 脚本和一个从gcd.sh 启动的Java 应用程序)。 process.kill() 只会杀死 gcs.sh,但 Java 进程会继续运行。
process.kill();之前
pstree 24010
gcd.sh───java─┬─java───22*[{java}]
└─20*[{java}]
process.kill();之后
java─┬─java───21*[{java}]
└─20*[{java}]
有没有办法从 Dart 中杀死一个进程及其所有子进程(整个进程组),而无需使用 ps 或类似的命令行工具?
通过启动进程的stdin处理命令输出有点麻烦,使用shell命令执行此任务时也难以跨平台工作。
【问题讨论】: