gpt4 book ai didi

c - 为什么这段使用 fork() 的代码可以工作?

转载 作者:行者123 更新时间:2023-11-30 21:16:11 25 4
gpt4 key购买 nike

我有这段代码,根据事件进程是无限循环中的父进程还是子进程来执行一些代码:

pid_t childPID;

childPID=fork();

while (1)
{
if (childPID >=0)
{
if (childPID==0)
{
[do child process stuff]
}
else
{
[do parent process stuff]
}
}
else
{
printf("\n Fork failed, quitting!!!!!\n");
return 1;
}
}

代码很简单,但对我来说有一件非常重要的事情,虽然我有一个猜测,但我不明白它是如何发生的:

如果不考虑我们正在创建 2 个进程,看起来 childPid 会不断地被重新分配,我认为这没有任何意义。

所以我的猜测是,fork 为每个进程创建一个 childPid,向父进程返回 0,向子进程返回 pid,尽管这种语法让我认为它应该只返回一个结果并将其分配给 child Pid。

我的猜测正确还是还涉及其他事情?

谢谢。

最佳答案

So my guess, is that fork creates a childPid for each process, returning a 0 to the parent process and the pid to the child process, even though this syntax makes me think it should only return only one result and assign it to chilPid.

正是如此。来自fork引用手册:

RETURN VALUE: On success, the PID of the child process is returned in the parent, and 0 is returned in the child. On failure, -1 is returned in the parent, no child process is created, and errno is set appropriately.

所以

Is my guess

为什么要猜测这是否在 POSIX 规范中精确定义?

关于c - 为什么这段使用 fork() 的代码可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36777873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com