Ответ
В Linux статус завершения процесса определяется его кодом выхода (exit code). Основной способ — проверить значение специальной переменной $? сразу после завершения приложения.
./my_application
echo $?
- 0 — успешное завершение.
- Любое ненулевое значение — завершение с ошибкой. Конкретное число часто указывает на тип ошибки (например, 1 — общая ошибка, 127 — команда не найдена).
Для более глубокого анализа причины завершения (особенно аварийного, например, segfault) используются:
- Логи ядра (
dmesgилиjournalctl -k) — покажут сообщения о критических ошибках (OOM killer, segmentation fault). - Трассировка системных вызовов (
strace) — помогает понять, на каком системном вызове программа упала.strace -f ./my_application 2>&1 | tail -20 - Логи systemd (
journalctl -u <service_name>) — если приложение работает как служба. - Сигналы: Код выхода >128 часто означает завершение по сигналу.
$? - 128= номер сигнала (например, 139 означает 139-128=11, сигнал SIGSEGV).