Javascript 如何在nodejs中运行永无止境的bash进程而不锁定服务器

Javascript 如何在nodejs中运行永无止境的bash进程而不锁定服务器,javascript,node.js,bash,Javascript,Node.js,Bash,服务器的重点是能够选择一个网络摄像头和流媒体,以及其他一些我已经在工作的东西。我正在尝试从node.js服务器中运行连续进程mjpg streamer。node.js服务器正在处理一个HTML页面,该页面有一个绑定到javascript函数的选择下拉列表,以通过socket.io向服务器发送命令。下拉列表允许我选择video0、video1和none。然而,每当我尝试运行服务器时,它都会拒绝在特定代码块无法访问或代码在运行无限进程时被卡住后说所有的话。如何在不锁定服务器的情况下执行此操作?以下是

服务器的重点是能够选择一个网络摄像头和流媒体,以及其他一些我已经在工作的东西。我正在尝试从node.js服务器中运行连续进程mjpg streamer。node.js服务器正在处理一个HTML页面,该页面有一个绑定到javascript函数的选择下拉列表,以通过socket.io向服务器发送命令。下拉列表允许我选择video0、video1和none。然而,每当我尝试运行服务器时,它都会拒绝在特定代码块无法访问或代码在运行无限进程时被卡住后说所有的话。如何在不锁定服务器的情况下执行此操作?以下是导致问题的代码:

child = exec("video0.sh", function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
  console.log('exec error: ' + error);
}
bash脚本video0.sh是:

cd mjpg-streamer/mjpg-streamer ;
export LD_LIBRARY_PATH=. ;
./mjpg_streamer -o "output_http.so -w ./www -p 8080" -i "input_uvc.so -d /dev/video0
从child_process.exec文档中:

当进程终止时,用输出调用回调函数


如果您希望该程序流式传输数据,那么它可能不会终止。您需要使用child_process.spawn,它返回一个ChildProcess对象。这使您能够以流的形式访问stdout和stderr,这意味着您可以在数据输出时处理数据,而不是只在数据完成后处理数据。

我该怎么做?流式传输的数据是一个实时视频流,以html img的形式将自身定向到8080端口。哦,我明白了。我认为视频需要通过节点服务器。这就是说,即使忽略stdout/stderr流,这也会阻止node.js服务器锁定。问题是child_process.exec会锁定服务器,直到它创建的进程完成。