//return 0 means OK, -1 means ERROR int CgidWorker::spawnCgid( int fd, char * pData, const char *secret ) { int pid; const char * pChroot = ""; if ( HttpGlobals::s_psChroot ) pChroot = HttpGlobals::s_psChroot->c_str(); snprintf( pData, 255, "uds:/%s%s", pChroot, getConfig().getServerAddrUnixSock() ); pid = fork(); //in child if (pid == 0) { CloseUnusedFd(fd); int ret = lscgid_main(fd, argv0, secret, pData); exit(ret); } else if (pid > 0) { LOG_NOTICE(( "[PID: %d]: forked cgid: %d", getpid(), pid )); m_pid = pid; return pid; } else { LOG_ERR(( "[PID: %d]: fork error", getpid() )); return -1; } }
//return 0 means OK, -1 means ERROR int CgidWorker::spawnCgid(int fd, char *pData, const char *secret) { int pid; const char *pChroot = ""; if (ServerProcessConfig::getInstance().getChroot() != NULL) pChroot = ServerProcessConfig::getInstance().getChroot()->c_str(); snprintf(pData, 255, "uds:/%s%s", pChroot, getConfig().getServerAddrUnixSock()); pid = fork(); //in child if (pid == 0) { CloseUnusedFd(fd); int ret = lscgid_main(fd, argv0, secret, pData); exit(ret); } else if (pid > 0) { LS_NOTICE("[PID: %d]: forked cgid: %d", getpid(), pid); m_pid = pid; return pid; } else { LS_ERROR("[PID: %d]: fork error", getpid()); return LS_FAIL; } }