杀死进程组

Kill process group

当我启动时

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 或类似的命令行工具?

通过已启动进程的标准输入来处理命令输出有点麻烦,而且在使用 shell 命令完成此任务时也很难跨平台工作。

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

目前 dart:io 中不支持终止进程组。我已经打开 http://dartbug.com/22470 来跟踪这个。