2010-04-09 4 views
1

Например, вызов exit(100) приведет к выходу из приложения со статусом 100, а вызов raise(SIGABRT) отменяет приложение со статусом 134 при создании дампа ядра. Но что, если мне нужен дамп ядра со статусом 100 или любым другим произвольным значением. Как я могу это сделать ? Я знаю, что есть несколько сигналов, которые запускают дамп ядра, но они, похоже, имеют фиксированные статусы выхода.Настройка статуса выхода при создании дампа ядра

+2

Зачем вам это делать? Все дело в том, чтобы узнать, вышло ли оно с демпинговым ядром. Большинство программ, которые обращают внимание на статусы выхода, должны просто различать нуль (успех) и ненулевой (отказ), но некоторые программы могут быть заинтересованы в том, чтобы знать, не удалось ли это при сбрасывании ядра, и в этом случае этот конкретный код выхода полезен. и заставляя какой-то другой код выхода, будут обманывать программы, зависящие от этого для этого. –

+0

Да, но это не для выпущенного программного обеспечения, только для внутренней отладки, чтобы иметь возможность более легко классифицировать дамп, не проверяя его с помощью внешних инструментов. – Zitrax

ответ

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() ...

Я согласен с замечаниями о том, что это плохая идея, хотя.

Смежные вопросы