C 关于管道、fork和if语句的初学者问题

C 关于管道、fork和if语句的初学者问题,c,sockets,networking,pipe,C,Sockets,Networking,Pipe,我正在学习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)

我正在学习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语句的结果?

您是否查找了
man fork()

父对象得到子对象的PID(非零),子对象得到零,因此父对象运行if的“一边”,子对象运行if的“另一边”


当然,-1返回(到父进程)表示错误。

这意味着,在我执行上述代码后,调用fork时,两个进程将分别运行。我说得对吗?完全正确:就像手册上说的!