[linux] обработка сигналов после exec
Если ты заказываешь сигнал, то, наверное, хочешь его получить, разве не логично?
Тебе не кажется что это очень странное поведение? Это уже совсем другой процесс, со другой логикой, с другим адресными пространством итп. Почему он должен ловить сигналы от предыдущего процесса?
Ну раз уж ему оставили файловый дескриптор, почему бы и не ловить?
Почему с другим адресным пространством? Все тоже самое. Другое дело, что обработчик сигнала могут затереть, тогда будет жопа.
Что значит "могут затереть"? Скажи, как их можно не затереть при exec?
Ну, а вообще, по default по всем RT сигналам процесс умирает, так что не очень прямо скажем хорошо получается, но --- нефиг дескрипторы оставлять открытые. FD_CLOEXEC. Достаточно логично, что раз дескрипторы есть и, как надо думать, все fcntl флаги остаются, то и сигналы будут присылаться. It's not a bug, it's the only reasonable behaviour.
Оставить комментарий
Landstreicher
я правильно понимаю, что вызов exec уничтожает все обработчики сигналов оставшиеся от предыдущего процесса?если да, то почему остается посылка сигналов от файловых дескрипторов?
если во время работы sleep сказать в соседней консоли touch /somedir/somefile то sleep вываливается:
Это баг? Или это умышленно так сделано (и зачем тогда)?