1

我正在学习套接字编程,并且我很了解 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

我的问题是为什么显示ifandelse语句的结果?

4

1 回答 1

2

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

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

为了帮助您理解:从您调用 fork() 的那一刻起,另一个进程正在执行您编写的程序。为了让这两个进程做不同的事情,fork() 在原始进程和副本中返回不同的值。正如我所写,原始进程接收新进程的pid,这对于两个进程之间的进一步通信非常有用。

于 2013-04-28T11:07:07.463 回答