Exemple #1
0
static void cpWorker_init(int worker_id, int group_id)
{
    //标识为worker进程
    CPGL.process_type = CP_PROCESS_WORKER;
    cpWorker_attach_mem(worker_id, group_id);

    CPWG.id = worker_id;
    CPWG.gid = group_id;
    CPWG.pid = getpid();

    char fifo_name[CP_FIFO_NAME_LEN] = {0};
    sprintf(fifo_name, "%s_%d", CP_FIFO_NAME_PRE, group_id * CP_GROUP_LEN + worker_id); //client 2 worker
    CPWG.pipe_fd_read = cpCreateFifo(fifo_name);

    sprintf(fifo_name, "%s_%d_1", CP_FIFO_NAME_PRE, group_id * CP_GROUP_LEN + worker_id); //worker 2 client
    int pipe_fd_write = cpCreateFifo(fifo_name);
    CPWG.pipe_fd_write = pipe_fd_write;
}
Exemple #2
0
int cpFork_one_worker(int worker_id, int group_id)
{
    int pid, ret;
    pid = fork();
    if (pid < 0)
    {
        cpLog("Fork Worker failed. Error: %s [%d]", strerror(errno), errno);
        return FAILURE;
    }
    else if (pid == 0)
    {
        //标识为worker进程
        CPGL.process_type = CP_PROCESS_WORKER;
        cpWorker_attach_mem(worker_id, group_id);
        ret = cpWorker_loop(worker_id, group_id);
        exit(ret);
    }
    else
    {
        return pid;
    }
}