2013-04-28 125 views
1

我正在学习套接字编程,我很了解c编程。例如,根据我的c编程知识,一旦处理了else语句内的某些内容,就不会执行相应if语句中的代码。例如,为什么if和else语句在单次运行时执行?

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

基于上面的说法,一个等于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声明如下所示?

回答

2

叉是用来创建一个新的过程。在旧进程中,它返回新进程的PID,并在新进程中返回0.每个输出行由不同的进程打印。

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

为了帮助您了解: 从你调用fork的那一刻()多了一个进程正在执行你写的程序。为了让这两个进程完成不同的事情,fork()在原始进程和重复进程中返回不同的值。正如我写的,原始进程接收新进程的PID,这对于两个进程之间的进一步通信非常有用。