与 fork return 值相关的混淆
Confusion related to fork return value
我正在阅读有关 fork()
系统调用的内容,它指出子进程的 fork()
的 return 值为 0。
我的问题是如果代码中有多个 fork()
系统调用怎么办。那么肯定会创建多个子进程,并且它们的 pid = 0.
但是 pid 应该是唯一的不是吗?
fork
在parent中的输出是新创建进程(child)的进程ID,在child中是0,假设没有错误。如果有错误fork
returns-1而没有child。这用于轻松指示 fork
之后的过程是 child 还是 parent,因为只有零表示 child(请参见下面的代码)。然而,child 进程 ID 不为零。 child可以通过函数getpid
.
获取其进程ID
int res;
if((res = fork())) {
// In parent, should check if res is -1, if it is fork failed
}
else {
// In child
}
我正在阅读有关 fork()
系统调用的内容,它指出子进程的 fork()
的 return 值为 0。
我的问题是如果代码中有多个 fork()
系统调用怎么办。那么肯定会创建多个子进程,并且它们的 pid = 0.
但是 pid 应该是唯一的不是吗?
fork
在parent中的输出是新创建进程(child)的进程ID,在child中是0,假设没有错误。如果有错误fork
returns-1而没有child。这用于轻松指示 fork
之后的过程是 child 还是 parent,因为只有零表示 child(请参见下面的代码)。然而,child 进程 ID 不为零。 child可以通过函数getpid
.
int res;
if((res = fork())) {
// In parent, should check if res is -1, if it is fork failed
}
else {
// In child
}