2013-12-05 1 views
0

У меня есть приложение, которое перезагружается при ошибке.pgrep --count program всегда возвращает 0, даже если есть, очевидно, экземпляр программы

Поскольку инициализация может занять некоторое время, я использую другое приложение для загрузки загрузочного видео.

Поскольку инициализация зависит от интернет-соединения, она может перезапустить много времени, поэтому мне нужно запустить видео один раз, после проверки того, что экземпляр программы еще не запущен.

Я думал, что я мог бы сделать так, как это:

var arg = 'pgrep --count omxplayer | echo $?'; 
exec(arg, function(err, stdout, stderr) { 
    var data = '' + stdout[0]; 
    console.log(data); 
    if (data === '0') { 
     callback(true); 
    } else { 
     callback(false); 
    } 
}); 

обратного вызова начать omxplayer, если аргумент является ложным.

Проблема заключается в том, что когда я смотрю на свой журнал, я вижу, что данные всегда равны 0, что заставляет приложение запускать столько же omxplayer, сколько и при перезагрузке.

У меня такая же проблема с pkill -0 omxplayer | echo $?

Как я могу проверить, если omxplayer работает или нет? Или как я могу исправить свой код?

+1

Попробуйте сделать «pgrep -lv omxplayer», в то время как omxplayer активен, вы должны увидеть его в списке, который возвращается. Тогда вы можете понять, почему это не соответствует, может быть несоответствие случая, когда вам нужно сделать «pgrep -i -count omxplayer» – hwatkins

+0

'pgrep -lv omxplayer' дать мне список процессов, но нет omxplayer или что бы там ни было ... Я знаю, что omxplayer запустил omxplayer.bin, это нечетно, я так посмотрю – DrakaSAN

+0

v инвертировать результат, без него. Я получаю процесс omxplayer – DrakaSAN

ответ

0

Я понял, ошибка была не в pgrep, а в том, как я обрабатывал stdout.

stdout [0], кажется, не делает ничего, и данные [0] ни.

Как я должен был получить это data.charAt (0), которые возвращают '0' только тогда, когда не запускается omxplayer.

var arg = 'pgrep --count omxplayer | echo $?'; 
exec(arg, function(err, stdout, stderr) { 
    var data = '' + stdout; 
    data = data.charAt(0); 
    console.log(data); 
    if (data === '0') { 
     callback(true); 
    } else { 
     callback(false); 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^