我在node.js中打开子进程以使用VLC启动RTSP流。然后,我想在电子申请发出命令后终止该过程。
这是我写的代码。有什么我做错了,因为即使代码运行,子进程也不会被杀死。我已经检查过cam没有未定义,它实际上进入了该代码块。
<i class="fas fa-camera-retro"></i>
答案 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