0

我正在学习套接字编程,并且我对 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 语句的结果?

4

1 回答 1

1

你抬头看了man fork()吗?

父母获得孩子的PID(非零),孩子获得零,因此父母正在运行if的“一侧”,而孩子正在运行“另一侧”。

<编辑> 当然,-1 返回(给父级)表示错误。

于 2013-04-28T10:50:02.890 回答