Nella sua pagina web sull'inganno del self-pipe , Dan Bernstein spiega una condizione di gara select()e segnala, offre una soluzione alternativa e conclude che
Naturalmente, la cosa giusta sarebbe quella di
fork()restituire un descrittore di file, non un ID processo.
Che cosa intende con questo: è qualcosa che riguarda la capacità select()dei processi figlio di gestire i loro cambiamenti di stato invece di dover usare un gestore di segnale per essere avvisati di quei cambiamenti di stato?
signalfds e come fosse una cosa allora?
wait(), c'erano cose che non potevi fare, quindi qualcuno ha inventato SIGCHLD, ma è stato un brutto lavoro. Nella mia esperienza, e ora che esistono, spruzzando bello, non bloccante wait3(), wait4(), e / o waitpid()le chiamate in luoghi chiave (forse il vostro anello evento principale) è un gran lunga superiore alternativa.