Pada nya halaman web tentang para trik self-pipa , Dan Bernstein menjelaskan kondisi ras dengan select()
dan sinyal, menawarkan solusi dan menyimpulkan bahwa
Tentu saja, Hal yang Benar adalah
fork()
mengembalikan deskriptor file, bukan ID proses.
Apa yang dia maksudkan dengan ini - apakah ini sesuatu tentang kemampuan select()
proses anak untuk menangani perubahan status mereka alih-alih harus menggunakan penangan sinyal untuk mendapat pemberitahuan tentang perubahan status itu?
signalfd
dan itu adalah hal yang dulu?
wait()
, ada hal-hal yang tidak dapat Anda lakukan, jadi seseorang menemukan SIGCHLD, tetapi itu adalah pekerjaan yang buruk. Dalam pengalaman saya, dan sekarang bahwa mereka ada, percikan bagus, nonblocking wait3()
, wait4()
dan / atau waitpid()
panggilan di tempat-tempat kunci (mungkin Anda acara loop utama) adalah alternatif yang jauh lebih unggul.