杀死进程组

时间:2015-02-13 10:42:58

标签: dart dart-io

当我启动时

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

似乎相关:http://dartbug.com/3637

1 个答案:

答案 0 :(得分:1)

目前没有支持在dart中杀死进程组:io。我已打开http://dartbug.com/22470来跟踪此事。