> > Il "trucco" รจ usare un socket UNIX domain bidirezionale, invece di due > pipe. > In questo modo per Nginx la comunicazione con il processo CGI dovrebbe > essere analoga a quella con un client remoto. > In particolare non dovrebbe mai essere necessario chiamare waitpid. > >
Ma cosi' non mi ritrovo pieno di zombie ? Oppure intendi comunque chiamare waitpid(-1...) a intervalli regolari per fare pulizia ? A rigor di logica quando sei in attesa dello STDOUT del CGI se ricevi uno stream vuoto, allora il processo dovrebbe aver finito il suo lavoro. Il problema e' se qualche cgi "cattivo" chiama una close(1) nel suo codice. A quel punto la chiamata a waitpid() sarebbe bloccante. In realta' poi mi sono ricordato della nuova syscall signalfd (in linux) che si potrebbe agganciare al SIGCHLD, quindi si potrebbe simulare il comportamento di kqueue(). Probabilmente e' una strada percorribile, se non fosse per il fatto che Igor e' da sempre allergico a chiamare fork() (o clone()) in nginx, e quindi ho paura che una inclusione nel ramo ufficiale potrebbe essere "problematica". -- Roberto De Ioris http://unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python