我正在学习socket编程,我对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
我的问题是为什么显示if
和else
语句的结果?
答案 0 :(得分:2)
Fork用于创建新进程。在旧过程中,它返回新进程的pid,在新进程中返回0.输出的每一行都由不同的进程打印。
http://linux.die.net/man/2/fork
帮助您了解: 从调用fork()的那一刻起,还有一个进程正在执行您编写的程序。为了让这两个进程做不同的事情,fork()在原始进程和副本中返回不同的值。正如我所写,原始进程接收新进程的pid,这对于两个进程之间的进一步通信非常有用。