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
,因为子进程本身没有子进程等待。从:
返回值
:成功时,返回终止进程的进程ID 小孩出现错误时,返回wait()
-1
(用于ECHILD
)wait()
调用进程没有任何不适合子进程的属性
请注意,此处的逻辑与规范相反:
在这里,父进程正在调用
execv()
。通常,当pid==0
时,是子进程执行此操作,而等待的是父进程。它将返回-1
,并将errno
设置为ECHILD
,因为子进程本身没有子进程可等待。从:
返回值
:成功时,返回终止进程的进程ID 小孩出现错误时,返回wait()
-1
(用于ECHILD
)wait()
调用进程没有任何不适合子进程的属性
请注意,此处的逻辑与规范相反: 在这里,父进程正在调用
execv()
。通常,当pid==0时,是孩子在等待,是家长在等待。您读了吗?它可能会失败?和(也可能失败)?也读,你读过吗?它可能会失败,而(哪个也可能失败)?同时阅读和
if (pid > 0) {
execv(*argv, argv);
}