получить SIGTERM

Я разработал интерфейс передачи сообщений в c, который используется для обеспечения связи между различными процессами, работающими в моей системе. Этот интерфейс создает 10-12 потоков для своей цели и использует сокеты TCP для обеспечения связи.

Он работает нормально, но иногда получает сигнал SIGTERM. Может кто-нибудь, пожалуйста, скажите мне, почему он получает этот сигнал.


person honey    schedule 19.04.2011    source источник
comment
Что-то направляет kill на ваш процесс? SIGTERM — это сигнал по умолчанию.   -  person wallyk    schedule 19.04.2011
comment
Возможно, вы могли бы в своем интерфейсе зарегистрировать обработчик сигнала и вывести значение pid процесса, отправившего SIGTERM (struct siginfo_t.si_pid) внутри обработчика.   -  person itisravi    schedule 19.04.2011
comment
никто не направляет убийство на мой процесс, он внезапно получает SIGTERM сам по себе   -  person honey    schedule 19.04.2011
comment
У меня есть обработчик SIGTERM, но он печатает только номер сигнала. я получил, и это 15.   -  person honey    schedule 19.04.2011
comment
хорошо, вместо этого напечатайте pid. Используйте sigaction() вместо signal(), чтобы зарегистрировать обработчик.   -  person itisravi    schedule 19.04.2011


Ответы (1)


Если человек не убивает ваш процесс, то это делает ядро.

Это может произойти, когда машина пытается спастись от утопления (вы израсходовали всю память/подкачку/ресурсы). Возможно, вы захотите посмотреть, что происходит в этой системе, когда ваш процесс запущен.

person Brian Roach    schedule 19.04.2011