I've got a piped logfile program I write to handle my logfiles, and someone using it on Solaris said that when they try to restart apache, it hangs on waiting for the piped program to terminate. Last time I checked Apache puts out a SIGHUP and then a SIGTERM to all child processes. The program calls exit() for a SIGTERM, and on Linux, seems to exit and let Apache restart properly, however on Solaris, it seems that it doesn't die properly and you have to send a SIGKILL to get it to die and let Apache restart.
We were able to fix this problem by having the program call exit() when it receives a SIGHUP too, but is this what Apache is expecting? Should it die on a SIGHUP? If not, any idea why the child process would be hanging on a Solaris system? Eli.