C 关于管道、fork和if语句的初学者问题
我正在学习socket编程,我对c语言编程非常熟悉 根据我的c语言编程知识,一旦else语句中的进程被处理。if语句中的进程不应该发生,并且将被终止。比如,C 关于管道、fork和if语句的初学者问题,c,sockets,networking,pipe,C,Sockets,Networking,Pipe,我正在学习socket编程,我对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)
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(非零),子对象得到零,因此父对象运行if的“一边”,子对象运行if的“另一边”
当然,-1返回(到父进程)表示错误。这意味着,在我执行上述代码后,调用fork时,两个进程将分别运行。我说得对吗?完全正确:就像手册上说的!