我有一个Future函数:
Future<Process> executeCommand(List<String> args) async {
var process = await Process.start('java', args, workingDirectory: folder);
return process;
}
process = await ref.read(searchControllerProvider).executeCommand(cmd);
await stdout.addStream(process.stdout);
它应该执行一个命令来运行一个jar文件。如何添加按钮在进程结束前终止该进程?Process.killPid(process.pid)
和process.kill()
都不工作。killPid
在我第一次单击按钮时返回true
,但它仍在运行。
1条答案
按热度按时间gtlvzcf81#
这更像是一个jar的问题,而不是 dart /Flutter的问题。Dart在
process.pid
中给出的pid
不是jar文件使用的正确的pid
。最后我运行了Java的
jps
命令,并在输出中循环搜索正确的pid。这是一个丑陋的解决方案,但它有效。