Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当子进程遇到等待指令时会发生什么情况?_C_Process_Fork_Wait - Fatal编程技术网

C 当子进程遇到等待指令时会发生什么情况?

C 当子进程遇到等待指令时会发生什么情况?,c,process,fork,wait,C,Process,Fork,Wait,假设我有以下代码: int main(int argc, char *argv []) { pid_t pid = fork(); if (pid > 0) { execv(*argv, argv); } int state=0; wait(&state); return state; } 子进程是否忽略等待并跳过,因为它不是调用进程?它将返回-1,并将errno设置为ECHILD,因为子进程本身没有子进程

假设我有以下代码:

int main(int argc, char *argv []) {
    pid_t pid = fork();
    if (pid > 0) {
        execv(*argv, argv); 
        }
    int state=0;
    wait(&state);
    return state;
}

子进程是否忽略等待并跳过,因为它不是调用进程?

它将返回
-1
,并将
errno
设置为
ECHILD
,因为子进程本身没有子进程等待。从:

返回值
  • wait()
    :成功时,返回终止进程的进程ID 小孩出现错误时,返回
    -1

在发生错误时,这些调用中的每一个都会设置为适当的值

错误
  • ECHILD
    (用于
    wait()

    调用进程没有任何不适合子进程的属性


请注意,此处的逻辑与规范相反:


在这里,父进程正在调用
execv()
。通常,当
pid==0
时,是子进程执行此操作,而等待的是父进程。

它将返回
-1
,并将
errno
设置为
ECHILD
,因为子进程本身没有子进程可等待。从:

返回值
  • wait()
    :成功时,返回终止进程的进程ID 小孩出现错误时,返回
    -1

在发生错误时,这些调用中的每一个都会设置为适当的值

错误
  • ECHILD
    (用于
    wait()

    调用进程没有任何不适合子进程的属性


请注意,此处的逻辑与规范相反:

在这里,父进程正在调用
execv()
。通常,当pid==0时,是孩子在等待,是家长在等待。

您读了吗?它可能会失败?和(也可能失败)?也读,你读过吗?它可能会失败,而(哪个也可能失败)?同时阅读和
if (pid > 0) {
    execv(*argv, argv); 
}