[Python] gestire processi figli

Roberto De Ioris roberto a unbit.it
Sab 30 Nov 2013 13:18:57 CET


> On 29/11/2013 19:59, Roberto De Ioris wrote:
>> [...]
>> La morte di un child e' segnalata da SIGCHLD (di default, occhio pero'
>> che
>> e' trappabile), ma non lavorerei con i segnali unix (per questo
>> specifico
>> problema) neanche sotto tortura.
>>
>> Dove non hai a disposizione kqueue (e WaitForMultipleObjects) vai di
>> polling e waitpid con WHOHANG:
>>
>
> Perchè, epoll + signalfd non va bene?

va bene, e' che non mi piace proprio dover fare affidamento su SIGCHLD.

Purtroppo i segnali posix/unix sono una di quelle cose che ti fanno
pensare: "fico c'e' su tutte le piattaforme, uso loro e passa la paura".
Il problema e' che poi ogni OS li gestisce a modo suo (soprattutto gli
unix proprietari)


>
> Inoltre, curiosità personale visto che non ho mai fatto test, quale è la
> differenza tra sigtimedwait e kqueue + apposito filtro o epoll + signalfd?
>
>

che kqueue non usa i segnali, quando un processo muore tutti i poller in
ascolto vengono svegliati dal kernel. Praticamente non hai nessuno dei
problemi dei segnali unix e (soprattutto) non ti costringe a modificare la
logica del tuo programma (o a fare trucchi strani, tra cui includo il mio
poller su waitpid suggerito nella mail di prima).

Purtroppo su Linux kqueue non c'e' :)

-- 
Roberto De Ioris
http://unbit.it


Maggiori informazioni sulla lista Python