So far we have only been using two parameters in our calls to pcntl_waitpid(), there is an optional third parameter that gives you more advanced control. For this parameter, you can pass either WNOHANG or WUNTRACED, or even WNOHANG|WUNTRACED to combine the two together.
The first option, WNOHANG, makes the call to pcntl_waitpid() return immediately if no children have terminated as opposed to waiting around. This makes the call much safer in interactive applications where user feedback is crucial. The second option, WUNTRACED, makes the call to pcntl_waitpid() return if a child gets stopped as part of job control. Of the two, use of the first is far more common.
Note that if WNOHANG is used, the return value for pcntl_waitpid() when no child was terminated is 0 as opposed to -1.
Author's Note: The next few chapters cover advanced process control functionality; you needn't understand these chapters in order to have a good grasp of process control, but if you want to count yourself as a guru you should give them a try.
Want to learn PHP 7?
Hacking with PHP has been fully updated for PHP 7, and is now available as a downloadable PDF. Get over 1200 pages of hands-on PHP learning today!
If this was helpful, please take a moment to tell others about Hacking with PHP by tweeting about it!
Next chapter: Event-driven child termination >>
Previous chapter: Duplication of resources when forking
Home: Table of Contents
Copyright ©2015 Paul Hudson. Follow me: @twostraws.