Убить группу процессов

Когда я запускаю

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 и приложение Java, запущенное из gcd.sh). 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 или подобным?

Немного громоздко обрабатывать вывод команды через стандартный ввод запущенных процессов, а также сложно сделать работу кросс-платформенной при использовании команд оболочки для этой задачи.

Кажется связанным: http://dartbug.com/3637


person Günter Zöchbauer    schedule 13.02.2015    source источник


Ответы (1)


В настоящее время в dart:io нет поддержки уничтожения группы процессов. Я открыл http://dartbug.com/22470, чтобы отслеживать это.

person sgjesse    schedule 18.02.2015