----------------------------------------------------------------------------------
@MSGID: <HjhvV-cjXd-35@gated-at.bofh.it> d6ef3d4f
@REPLY: <Hjhcu-cjPE-3@gated-at.bofh.it> d7dd4a14
@REPLYADDR Maksim Dmitrichenko
<dmitrmax@gmail.com>
@REPLYTO 2:5075/128 Maksim Dmitrichenko
@CHRS: CP866 2
@RFC: 1 0
@RFC-Message-ID: <HjhvV-cjXd-35@gated-at.bofh.it>
@RFC-References: <HiaG5-bCEH-5@gated-at.bofh.it>
<HiA7w-bTkY-3@gated-at.bofh.it> <Hj5XH-ccM0-7@gated-at.bofh.it> <Hjhcu-cjPE-3@gated-at.bofh.it>
@RFC-MIME-Version: 1.0
@RFC-Content-Type: multipart/alternative;
boundary="000000000000925cdd06067b8fee"
@RFC-Content-Transfer-Encoding: 8bit
@TZUTC: 0200
@TID: FIDOGATE-5.12-ge4e8b94
пт, 29 сент. 2023 г. в 12:37, Eugene Berdnikov <
bd4@protva.ru>:
> Потому как любое
> действие, затрагивающее libc, грозит разносом стэка, и вообще во время
> обработки сигнала сплошь минные поля. А когда из сигхэндлера вернулся,
> нужно как-то мониторить тот факт, что тебе пришёл сигнал, т.е. рядом
> с poll/select будет ещё вычитывание той переменной, с флагом.
Это тоже не совсем так. Во-первых, man 7 signal-safety содержит список
async signal safe функций, которые можно дергать из обработчика сигнала.
Во-вторых, трюк с глобальным флагом - он так себе, обычно либо в пайп
писали из обработчика сигнала, который ждали на том самом select`е (и тогда
вопрос: нахрена танцы с сигналами, если сразу можно писать в socket?), либо
в sem_post делали, который можно делать из обработчкика, но semaphore по
старой доброй UNIX-традиции - это либо файл, либо процесс (нет), поэтому
его никак не должаться в select/poll.
-
With best regards
Maksim Dmitrichenko
--- FIDOGATE 5.12-ge4e8b94
* Origin: linux.* mail to news gateway (2:5075/128)
SEEN-BY: 221/6 301/1 467/888 5001/100 5005/49
5015/255 5019/40 5020/715 848
SEEN-BY: 5020/1042 4441 12000 5030/49 1081 5061/133
5075/37 128 6078/80
@PATH: 5075/128 5020/1042 4441