Зачем нужен WEXITSTATUS? - PullRequest
       7

Зачем нужен WEXITSTATUS?

12 голосов
/ 27 апреля 2011

Следующий код будет ожидать завершения дочернего процесса и затем печатать его код возврата.

int status;
wait(&status);
cout << "return code = " << WEXITSTATUS(status) << endl;

Почему код возврата не может быть просто сохранен в переменной int? Почему его нужно конвертировать с помощью функции WEXITSTATUS? Что представляет собой значение неконвертированной переменной int?

Ответы [ 2 ]

15 голосов
/ 27 апреля 2011

int содержит больше, чем просто код выхода - он также хранит информацию о том, как завершился процесс, например, если ему было сообщено (WIFSIGNALED) или если exit() был вызван (WIFEXITED), и т. Д..

Макросы W используются для извлечения различной информации из int.

.
3 голосов
/ 27 апреля 2011

status содержит не только возвращаемое значение процесса, но также , почему возвращен вызов wait(2,3p) (что не всегда может быть нормальным выходом из процесса).Различные макросы W*() используются для разбиения возвращаемого значения на составляющие части.

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