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?
signalfd
s 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.