当我启动时
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命令执行此任务时难以跨平台工作。