> 2013/11/27 Manlio Perillo <manlio.peri...@gmail.com>: >> La cosa piĆ¹ complessa e restare in attesa fin quando un processo >> termina. >> Su sistemi POSIX puoi usare sigtimedwait, su FreeBSD kqueue con apposito >> filtro, su Linux epoll con quell'orrore di signalfd, su Windows >> WaitForMultipleObjects. > > Molto interessante. Sto affrontando esattamente questo problema in > psutil, ovvero aspettare che un certo PID termini specificando un > timeout: > https://code.google.com/p/psutil/issues/detail?id=445 > Ho dato un occhio a sigtimedwait() (che tra l'altro hanno esposto in > Python 3.3). > Vedo che si aspetta una lista di segnali e la cosa mi spiazza un po'. > Dovrei passargli SIGTERM e SIGKILL? Ci sono altri segnali che causano > la morte di un processo e che dovrei prendere in considerazione? > > ---
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: while 1: aspetta... if waitpid(blah blah, WNOHANG): break -- Roberto De Ioris http://unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python