2013-04-28 42 views
0

我正在学习套接字编程,并且我对c编程非常了解。管道,叉子和if语句的初学者问题

基于我的c编程知识,一旦处理inside else语句。 if语句中的进程不应该发生并且会被杀死。对于情况下,

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

基于上面的说法,一个等于1,所以过程1应该执行和过程2将不被执行。应该是正确的,我希望如此。

我的问题是下面的代码

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 

我的问题是,为什么语句的结果如果和其他的显示?

回答

1

您是否抬头man fork()

父节点获取子节点的PID(非零)并且子节点为零,因此父节点正在运行if和子节点“other”的“一侧”。

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

+0

这意味着,在我执行上面的代码之后,两个进程将在fork被调用时单独运行。我对吗? – edisonthk 2013-04-28 10:55:31

+0

准确地说:就像手册页说的一样! – John3136 2013-04-28 10:56:30