2014-02-06 15 views
0

Точка сервера должна быть в состоянии выбрать веб-камеру и передать ее, а также несколько других вещей, которые у меня уже есть. Я пытаюсь запустить непрерывный процесс (mjpg-streamer) с сервера node.js. Сервер node.js обрабатывает показ страницы HTML, у которой есть выпадающее меню, связанное с функцией javascript для отправки команды на сервер через socket.io. Выпадающее меню позволяет мне выбирать video0, video1 и none. Тем не менее, всякий раз, когда я пытаюсь запустить сервер, он отказывается говорить все после того, как конкретный блок кода недоступен или код застревает при запуске бесконечного процесса. Как я могу выполнить это без блокировки сервера? Вот код, который вызывает проблему:Выполнение непрерывного процесса из Node.js

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

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"; 
+0

не пропустите закрытие '})' там? – ZenMaster

+0

Это может быть очевидно, но что-то очень много сделали (включая меня). Вы установили исполняемый файл sh? 'chmod + x video0.sh'? – tsturzl

+0

Не могли бы вы предоставить какие-либо ошибки? – tsturzl

ответ

1

вы можете установить бесконечный цикл в чистой оболочке непосредственно

#!/usr/bin/bash 

cd mjpg-streamer/mjpg-streamer ; 
export LD_LIBRARY_PATH=. ; 
while : 
do 
    ./mjpg_streamer -o "output_http.so -w ./www -p 8080" -i "input_uvc.so -d /dev/video0"; 
    sleep 5 
done 
0
child = exec("sh video0.sh", function (error, stdout, stderr) { 
    sys.print('stdout: ' + stdout); 
    sys.print('stderr: ' + stderr); 
    if (error !== null) { 
    console.log('exec error: ' + error); 
    } 
Смежные вопросы