Например, вызов exit(100)
приведет к выходу из приложения со статусом 100, а вызов raise(SIGABRT)
отменяет приложение со статусом 134 при создании дампа ядра. Но что, если мне нужен дамп ядра со статусом 100 или любым другим произвольным значением. Как я могу это сделать ? Я знаю, что есть несколько сигналов, которые запускают дамп ядра, но они, похоже, имеют фиксированные статусы выхода.Настройка статуса выхода при создании дампа ядра
1
A
ответ
2
Похоже 134
равна (128+6)
и euqals к ((1<<7) | 6)
(где #define SIGABRT 6
)
Совпадение?
+1
Не случайно, см. Http://stackoverflow.com/questions/1101957/1104641#1104641 и другие. – ephemient
2
Ну, я полагаю, вы могли бы fork()
и иметь родительский вызов _exit(100)
и ребенок вызов abort()
...
Я согласен с замечаниями о том, что это плохая идея, хотя.
Зачем вам это делать? Все дело в том, чтобы узнать, вышло ли оно с демпинговым ядром. Большинство программ, которые обращают внимание на статусы выхода, должны просто различать нуль (успех) и ненулевой (отказ), но некоторые программы могут быть заинтересованы в том, чтобы знать, не удалось ли это при сбрасывании ядра, и в этом случае этот конкретный код выхода полезен. и заставляя какой-то другой код выхода, будут обманывать программы, зависящие от этого для этого. –
Да, но это не для выпущенного программного обеспечения, только для внутренней отладки, чтобы иметь возможность более легко классифицировать дамп, не проверяя его с помощью внешних инструментов. – Zitrax