-DFOREGROUND mutes setsid() call so entire httpd processes collection (master + childs) inherites process group from the parent process which is usually some sort of supervisor process. Regardless of fact that https is NOT process group leader in given case httpd uses *_killpg() call[s] during cleanup stage what effectively kills entire process group httpd do not own. This is complete disaster and apache must not do this. httpd should check whether it is process group leader or not first. If not, it must not kill process group it belongs. Saying that I see no other way as to keep childs PIDs somewhere and kill them separately one by one. In theory "httpd -DFOREGROUND -DNO_DETACH" should make apache run as well behaved application, but we see that this does not work at all. In some cases it can kill init and this is what must never happen.