LINUX.ORG.RU

Возвращать ли зарезервированные системой exit коды из своей программы

 ,


0

1

В общем есть один процесс, который запускает второй процесс, и OOM killer убивает этот второй процесс, в этой ситуации первый процесс получает 137 как exit code и должен как-то отчитаться об этом пользователю. Конечно прога напишет в лог что «Child process is killed with sigkill», но стоит ли после этого основной программе также завершиться с 137-м кодом? Могут ли из-за этого возникнуть проблемы с совместимостью?

Вопрос конечно странный, но мне не понятно нужно ли вернуть свой номер (скажем 13), или системный 137, какое решение более общепринятое?



Последнее исправление: olologin (всего исправлений: 1)

я не знаю, может в posix-стандарте что-то про это и написано, но на практике всем пофиг, один только ноль имеет значение. завершайся хоть с каким, хоть с нулевым, никаких проблем не будет. это же твоё дело, чем завершится твоя программа, вот и выбирай сам.

anonymous
()

Я бы что-то своё возвращал (так меньше путаницы), кроме случая, когда родительский процесс является «прозрачным» враппером для дочернего. Хотя и тут надо не код возвращать, а себе kill() делать, чтобы правильные флаги взвести.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Хотя и тут надо не код возвращать, а себе kill() делать, чтобы правильные флаги взвести.

Флаги чего? exit(137);

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Флаги статуса завершения. Родитель после waitpid() по WIFSIGNALED поймёт, что сигнала не было.

xaizek ★★★★★
()

Я думаю, что если твоя программа не завершилась аварийно, то и соответствующий код возвращать не нужно. Если аварийное завершение вызываемой программы — нормальная ситуация, не приводящая к досрочному останову твоей, то код возврата из твоей программы должен быть 0. Иначе, если твоя программа считает это фатальной ошибкой и досрочно завершается, то надо выбрать ненулевой код возврата из допустимого пользовательского диапазона не зарезервированных для спец. нужд кодов и возвратить его, описав этот случай в документации к твоей программе и к справке по ней. При этом ничто не мешает отобразить в логе код возврата вызываемого процесса. Но если ты возвратишь 137, то при анализе сбоя будет непонятно, твоя программа получила сигнал SIGKILL или вызываемая. А это нехорошо.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

Да, согласен, будет путаница. Тогда решено!

olologin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.