Linux

2013-10-08 4 views
0

хрон создана, и в хронах содержит следующий код:Linux

int flag = system("path/main"); 
printf("system return value: %d \n", flag); 

работы хрон преобразование приложения каждый день, и «флаг», как правило, «0», однако иногда «falg» - «32512».

У меня есть код ошибки Google, это означает, что «команда не найдена».

Но мне нужна ваша помощь, чтобы просветить меня, почему когда-то все в порядке, иногда нет. Имеет значение с относительным каталогом «путь/основной»

+0

Нам потребуется дополнительная информация об этом «иногда». Возможно, задание выполняется другой политикой/другим пользователем. –

+0

Извините за недостаток информации. Я еще не нашел закона о «порой». Извините за это. – iceKing

+0

[system (3)] (http://man7.org/linux/man-pages/man3/system.3.html) возвращает статус, указанный [waitpid (2)] (http://man7.org /linux/man-pages/man2/waitpid.2.html). Прочитайте обе страницы man, с которыми я связан. –

ответ

1

Код возврата - это битмаска нескольких вещей (см., Например, this question). В вашем случае он предлагает код выхода 255 (который является чисто из вашего дочернего процесса, а не из-за сигнала). Вы должны проверить свою программу main.

+0

32512 = 127 * 256, поэтому код возврата оболочки равен 127. это означает, что команда не была найдена « – iceKing

+0

Спасибо за вашу помощь. Я хотел бы проверить код более тщательно.^_^ – iceKing

+0

@iceKing: Если вызов 'system()' не возвращал '-1' и' 127 == WEXITSTATUS (флаг) ', то либо shell (' bin/sh'), который должен был выполнить * программа *, переданная 'system()' не была найдена ** или ** сама * программа * сама вернула '127'. С этой ценностью существует явная двусмысленность. – alk

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