Mam zarejestrowany program obsługi sygnału w moim programie. Po otrzymaniu niepożądanego sygnału (SIGABRT), wywołuję "exit (-1)" w procedurze obsługi sygnału, aby opuścić proces. Ale jak zauważyłem w kilku okazjach, wywołuje exit(), ale nie kończy procesu.Czy exit() nie może zakończyć procesu?
Emisja została losowo wygenerowana i mocno podejrzewam, że wykonano exit().
Czy mogą istnieć jakiekolwiek powody lub przypadki, w których exit() może nie zakończyć procesu.
Dzięki.
Ja zdecydowanie radzę szukać innej przyczyny błędu niż funkcji typu 'exit'.Prawie zawsze, gdy myślisz, że jest błąd w kompilatorze lub standardowej bibliotece itp., To twój błąd powoduje błąd. – Shahbaz
@Shahbaz: Mandar nie pyta o błąd w implementacji lub sugeruje, że taki istnieje. Pytanie brzmi, czy 'exit' jest określony, aby zawsze zakończyć program, a odpowiedź brzmi nie (a zwłaszcza nie, jeśli wywołana z obsługi sygnału). –
Dlaczego po prostu ustawić program obsługi dla SIGABRT, aby zakończyć()? Cokolwiek robisz w obsłudze sygnału, wykonaj je w wywołaniu atexit(). –