Как я могу использовать Wexitstatus, чтобы получить значение более 255

Я могу немного говорить по-английски, поэтому я надеюсь, что вы понимаете, что я сказал.

Я разветвляю дочерний процесс, затем делаю ADD в дочернем процессе. Пример: 56+48=104

Если значение ниже 255, я могу использовать "wexitstatus(status)", чтобы получить ответ.

Но если значение выше 256, это будет неправильно!

Как я могу сделать?

1 ответ

Если программа возвращает код выхода> 255, программа просто неверна и должна быть исправлена. Это против стандарта Unix. Если вы не используете стандартный Unix, вам, вероятно, понадобится помощь специалиста из контактов вашей организации.

С manpage для ожидания ():

WEXITSTATUS (stat_val)

Если значение WIFEXITED(stat_val) не равно нулю, этот макрос оценивается как младшие 8 битов аргумента состояния, которые дочерний процесс передал в _exit() или exit(), или значение, которое дочерний процесс возвратил из main().

Он ограничен 8 битами, что означает 1 байт, что означает, что int из WEXITSTATUS может находиться в диапазоне от 0 до 255. Фактически, любая Unix-программа будет возвращать максимум 255.

Кроме того, многие ОС / программы резервируют> 127 для системных обозначенных кодов, так что вам даже не нужно ничего использовать выше этого.

Если вам нужно больше кодов возврата, чем 126 (поскольку 0 не является ошибкой), попробуйте записать его в STDOUT и перехватить его.

Другие вопросы по тегам