Я пытаюсь вернуть целочисленное значение из дочернего процесса.
Однако, если я использую exit(1)
, я получаю 256
в качестве вывода из wait()
. Использование exit(-1)
дает 65280
.
Есть ли способ получить фактическое значение int, которое я отправляю из дочернего процесса?
if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
printf("%d",status);
Редактировать: Используя exit(-1)
(это то, что я действительно хочу), я получаю 255 в качестве вывода для WEXITSTATUS(status)
. Он должен быть без подписи?
exit()
против_exit()
не имеет значения - статус выхода обрабатывается одинаково в любом случае. Используйтеexit()
, чтобы убедиться, что ожидающий вывод сбрасывается из стандартных каналов ввода-вывода и подобных проблем очистки - на самом деле, используйтеexit()
почти все время. Основания для использования_exit()
есть, но они редки. - person Jonathan Leffler   schedule 07.09.2010exit
определенно правильный выбор. Ваша проблема неexit
, аwaitpid
, как предполагает ответ Дэймона. - person Jens Gustedt   schedule 07.09.2010