nxt_process_create() changed to add process to runtime before callbacks.
This commit is contained in:
@@ -244,7 +244,7 @@ nxt_master_create_worker_process(nxt_task_t *task, nxt_runtime_t *rt,
|
||||
port->engine = 0;
|
||||
port->type = init->type;
|
||||
|
||||
pid = nxt_process_create(task, init);
|
||||
pid = nxt_process_create(task, process);
|
||||
|
||||
switch (pid) {
|
||||
|
||||
@@ -253,19 +253,10 @@ nxt_master_create_worker_process(nxt_task_t *task, nxt_runtime_t *rt,
|
||||
|
||||
case 0:
|
||||
/* A worker process, return to the event engine work queue loop. */
|
||||
process->pid = nxt_pid;
|
||||
port->pid = nxt_pid;
|
||||
|
||||
nxt_runtime_process_add(rt, process);
|
||||
|
||||
return NXT_AGAIN;
|
||||
|
||||
default:
|
||||
/* The master process created a new process. */
|
||||
process->pid = pid;
|
||||
port->pid = pid;
|
||||
|
||||
nxt_runtime_process_add(rt, process);
|
||||
|
||||
nxt_port_read_close(port);
|
||||
nxt_port_write_enable(task, port);
|
||||
|
||||
@@ -20,9 +20,12 @@ nxt_pid_t nxt_ppid;
|
||||
|
||||
|
||||
nxt_pid_t
|
||||
nxt_process_create(nxt_task_t *task, nxt_process_init_t *process)
|
||||
nxt_process_create(nxt_task_t *task, nxt_process_t *process)
|
||||
{
|
||||
nxt_pid_t pid;
|
||||
nxt_runtime_t *rt;
|
||||
|
||||
rt = task->thread->runtime;
|
||||
|
||||
pid = fork();
|
||||
|
||||
@@ -30,7 +33,7 @@ nxt_process_create(nxt_task_t *task, nxt_process_init_t *process)
|
||||
|
||||
case -1:
|
||||
nxt_log(task, NXT_LOG_CRIT, "fork() failed while creating \"%s\" %E",
|
||||
process->name, nxt_errno);
|
||||
process->init->name, nxt_errno);
|
||||
break;
|
||||
|
||||
case 0:
|
||||
@@ -40,12 +43,23 @@ nxt_process_create(nxt_task_t *task, nxt_process_init_t *process)
|
||||
/* Clean inherited cached thread tid. */
|
||||
task->thread->tid = 0;
|
||||
|
||||
nxt_process_start(task, process);
|
||||
process->pid = nxt_pid;
|
||||
process->init->port->pid = nxt_pid;
|
||||
|
||||
nxt_runtime_process_add(rt, process);
|
||||
|
||||
nxt_process_start(task, process->init);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* A parent. */
|
||||
nxt_debug(task, "fork(\"%s\"): %PI", process->name, pid);
|
||||
nxt_debug(task, "fork(\"%s\"): %PI", process->init->name, pid);
|
||||
|
||||
process->pid = pid;
|
||||
process->init->port->pid = pid;
|
||||
|
||||
nxt_runtime_process_add(rt, process);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ typedef struct {
|
||||
|
||||
|
||||
NXT_EXPORT nxt_pid_t nxt_process_create(nxt_task_t *task,
|
||||
nxt_process_init_t *process);
|
||||
nxt_process_t *process);
|
||||
NXT_EXPORT nxt_pid_t nxt_process_execute(nxt_task_t *task, char *name,
|
||||
char **argv, char **envp);
|
||||
NXT_EXPORT nxt_int_t nxt_process_daemon(nxt_task_t *task);
|
||||
|
||||
Reference in New Issue
Block a user