我正在学习套接字编程,并且熟悉 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(非零),而子进程获取 0,因此父进程运行 if 的“一侧”,而子进程运行“另一侧”。
<编辑> 当然,-1 返回(给父级)表示错误。
关于c - 关于 pipeline、fork 和 if 语句的初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262068/