В базовом уровне программного обеспечения, которое я поддерживаю, имеется 150 заявлений, распространяемых среди различных приложений C, которые совершают вызов другой команды Linux (например, rm -rf ...
) или настраиваемому приложению с использованием status = system(cmd)/256
. Когда либо вызывается, код состояния, возвращаемый из команды Linux или пользовательского приложения, делится на . Так что, когда код состояния больше 0, мы знаем, что была проблема. Однако, как написано программное обеспечение, он не всегда регистрирует, какая команда или приложение вернули код состояния. Так что, если в коде состояния было указано 32768, при делении на 256, код состояния - .Определить код статуса выхода для выхода
Программное обеспечение является старым, и, хотя я мог вносить изменения, было бы хорошо, если бы какая-либо из названных команд или приложений называла их исходный код состояния в другом месте.
Есть ли способ определить исходный код состояния в стандартном файле журнала Linux и приложении, которое его вернуло?
Напишите обертку (функцию или макрос), которая вызывает исходную 'system()' и записывает полный результат перед возвратом. – alk
Код состояния, возвращаемый 'system', помещается в один байт, если команда не получила сигнал (например, сбой с' SIGSEGV') –
@BasileStarynkevitch: Тогда зачем делиться на 256? Я вижу коды ошибок, такие как 32768. –