( Kiskübi | 2019. 06. 17., h – 01:35 )

A szignálokkal egész sok baj van:
https://ldpreload.com/blog/signalfd-is-useless

Az aszinkron handler okozza a problémákat, mert megszakít mindent, rendszerhívást is.

Amikor nem kell gyors reakcióidő, illetve nem baj, hogy egy-egy ismétlődő szignált lenyel a rendszer (pl. SIGTERM, SIGWINCH, ilyenek közül egyet is elég elkapni), akkor nincs nagy gond. Pl. egy eseménykezelő ciklussal és sigpending()-gel időnként meg lehet nézni, hogy történt-e valami - emellett az összes többi esemény lehet azonnal kezelhető.

Van, amit fifo-val lehet megoldani, pl. felhasználói szignálokat ilyesmire váltanám.

Van, amit nem lehet máshogy megoldani, pl. SIGCHLD; itt úgy tűnik, benne marad némi versenyhelyzet, még a külön szálas megoldásban is. Plusz ott van a close()-probléma:
http://www.daemonology.net/blog/2011-12-17-POSIX-close-is-broken.html