diff options
author | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 11:08:19 +0100 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 11:08:19 +0100 |
commit | 2041deb6da8825095e007cd5638abd6ffc4f3a4e (patch) | |
tree | 8100b87ea48f55f147da3592d85e7415cba875dc | |
parent | 4b2151ef965bfcf90b9ebdcf759a5f788368116f (diff) | |
download | fcgiwrap-2041deb6da8825095e007cd5638abd6ffc4f3a4e.tar.xz fcgiwrap-2041deb6da8825095e007cd5638abd6ffc4f3a4e.zip |
prefork: Fix 100% CPU usage in parent process
When a child process is terminated, the parent calls waitpid() to check
for dead children. This returns -1 on error (e.g. there are no other
children or a signal interrupted waitpid()), the pid (> 0) for dead
children OR 0 if there are some children which are still alive.
Fixes gnosek/fcgiwrap#18.
-rw-r--r-- | fcgiwrap.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -623,7 +623,7 @@ static void sigchld_handler(int dummy) { int status; - while ((dummy = waitpid(-1, &status, WNOHANG)) != -1) { + while ((dummy = waitpid(-1, &status, WNOHANG)) > 0) { /* sanity check */ if (nrunning > 0) nrunning--; |