void swProcessPool_shutdown(swProcessPool *pool) { int i, status; swWorker *worker; SwooleG.running = 0; swSignal_none(); //concurrent kill for (i = 0; i < pool->run_worker_num; i++) { worker = &pool->workers[i]; if (swKill(worker->pid, SIGTERM) < 0) { swSysError("kill(%d) failed.", worker->pid); continue; } } for (i = 0; i < pool->run_worker_num; i++) { worker = &pool->workers[i]; if (swWaitpid(worker->pid, &status, 0) < 0) { swSysError("waitpid(%d) failed.", worker->pid); } } swProcessPool_free(pool); }
static int swFactoryProcess_shutdown(swFactory *factory) { int status; if (swKill(SwooleGS->manager_pid, SIGTERM) < 0) { swSysError("kill(%d) failed.", SwooleGS->manager_pid); } if (swWaitpid(SwooleGS->manager_pid, &status, 0) < 0) { swSysError("waitpid(%d) failed.", SwooleGS->manager_pid); } return SW_OK; }
static int swFactoryProcess_shutdown(swFactory *factory) { int status; swServer *serv = factory->ptr; if (swKill(serv->gs->manager_pid, SIGTERM) < 0) { swSysError("kill(%d) failed.", serv->gs->manager_pid); } if (swWaitpid(serv->gs->manager_pid, &status, 0) < 0) { swSysError("waitpid(%d) failed.", serv->gs->manager_pid); } return SW_OK; }