Сбой вызова linux system (3) - как узнать ошибочно-подобный код ошибки? - PullRequest
1 голос
/ 01 октября 2011

Когда я вызываю систему (char * Command) с какой-то командой, и она не работает, я хотел бы знать код ошибки (а не анализировать вывод текста).Например, я запускаю систему («rm file»), а «file» не существует - как я могу получить ENOENT в свое приложение?

1 Ответ

4 голосов
/ 01 октября 2011

Это можно сделать только в том случае, если команда явно возвращает этот статус.

rc = system(...);
if (rc != -1 && WIFEXITED(rc))
    printf("Terminated with status %d\n", WEXITSTATUS(rc));

Возвращаемое значение равно -1 при ошибке (например, fork(2) не удалось), а состояние возвратакомандуй иначе.Последний статус возврата имеет формат, указанный в wait(2).Таким образом, код выхода команды будет WEXITSTATUS(status).

Но если команда просто возвращает 1, когда что-то идет не так, вызывающей стороне трудно определить фактическую причину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...