Exemple #1
0
//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;
    }
}
Exemple #2
0
//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;
    }
}