gpt4 book ai didi

networking - 为什么if和else语句单次执行?

转载 作者:行者123 更新时间:2023-12-03 12:00:58 25 4
gpt4 key购买 nike

我正在学习套接字编程,并且我很了解c编程。

例如,根据我的C编程知识,一旦处理else语句中的某些内容,就不应执行相应if语句中的代码。例如,

int a = 1;
if(a == 1) process1 ;
else process2;

根据上面的陈述,a等于1,因此应执行 process1而不会执行 process2。我相信这是正确的。

我的问题用以下代码说明:
int main(void){
pid_t pid;
int pp[2];

pipe(pp);

pid = fork();
if(pid == 0){
printf("Processed pid == 0\n");
}else{
printf("Processed pid != 0\n");
}

return 0;
}

运行此程序时,我得到以下输出:
Processed pid == 0
Processed pid != 0

我的问题是,为什么同时显示了 ifelse语句的结果?

最佳答案

fork 用于创建新过程。在旧进程中,它返回新进程的pid,在新进程中,它返回0。输出的每一行是由不同进程打印的。

http://linux.die.net/man/2/fork

为了帮助您理解:
从您调用fork()的那一刻起,又有一个过程正在执行您编写的程序。为了使这两个进程执行不同的操作,fork()在原始进程和重复进程中返回不同的值。如我所写,原始进程收到新进程的pid,这对于两个进程之间的进一步通信非常有用。

关于networking - 为什么if和else语句单次执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262165/

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