在node.js / electron中杀死子进程

时间:2018-06-01 14:33:53

标签: node.js electron

我在node.js中打开子进程以使用VLC启动RTSP流。然后,我想在电子申请发出命令后终止该过程。

这是我写的代码。有什么我做错了,因为即使代码运行,子进程也不会被杀死。我已经检查过cam没有未定义,它实际上进入了该代码块。

<i class="fas fa-camera-retro"></i>

1 个答案:

答案 0 :(得分:0)

可能发生这种情况的原因之一是因为您产生的子进程(RTSP stream using VLC-我们将此子进程称为“ A”)正在创建其他子进程(“ B”,“ C”等) 。)在您尝试杀死子进程“ A”时不会被杀死。

  

子线程完成执行并删除后,孙线程成为僵尸进程, process.kill()无法删除它。

您可以使用以下方法:

以分离模式生成子进程,以便您可以杀死所有子进程。

    var spawn = require('child_process').spawn;
    var child = spawn('my-command', {detached: true});
    process.kill(-child.pid);

请注意-之前的pid。这会将pid转换为一组pids,以用于流程kill()方法。

相关链接:

[如何] https://azimi.me/2014/12/31/kill-child_process-node-js.html

[相关问题] https://github.com/nodejs/help/issues/1389

[文档] https://nodejs.org/api/child_process.html#child_process_subprocess_kill_signal