On Sunday 27 July 2008 16:38:47 Arnaud Le Blanc wrote:
> On Sunday 27 July 2008 16:04:58 Derick Rethans wrote:
> > On Sun, 27 Jul 2008, Arnaud Le Blanc wrote:
> > 
> > > Hi,
> > > 
> > > I made a pcntl_signal_dispatch() function [1] to allow scripts that use 
> > > signals to work without ticks.
> > > 
> > > This function just calls the pcntl's tick handler on-demand so that all 
> signal 
> > > handler functions are called if there are pending signals.
> > > 
> > > It does not allow the signal handlers to be called at any time like with 
> > > ticks, but allows things like this:
> > > 
> > > while (do_something()) {
> > >  /* main loop */
> > >  pcntl_signal_dispatch();
> > > }
> > > 
> > > or 
> > > 
> > > while (pcntl_signal_dispatch() && do_something()) {
> > >  /* main loop */
> > > }
> > 
> > Does the function block if there are no pending signals? If not, I think 
> > we should make that an option.
> > 
> 
> No, but I was thinking to implement sigwaitinfo()/sigtimedwait(), which 
blocks 
> indefinitly or for a given time until a signal is delivered. This also 
> requires to implement sigprocmask().
> 
> It would also be great to have signalfd() (which is select()able), but it's 
> Linux specific and requires quite recent Kernel and libc (that said, I'm 
> going to implement it if there are positive feedbacks about that).
> 

I added pcntl_sigwaitinfo(), pcntl_sigtimedwait() and pcntl_sigprocmask() to 
my patch:

http://arnaud.lb.s3.amazonaws.com/pcntl.patch

pcntl_sigwaitinfo() allows to block until the specified signals have been 
delivered.
pcntl_sigtimedwait() does the same thing, but with a timeout.
pcntl_sigprocmask() allows to block a set of signals so that they will not be 
delivered between two calls of the above functions.



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to