c - 关于 pipeline、fork 和 if 语句的初学者问题

标签 c sockets networking pipe

我正在学习套接字编程,并且熟悉 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/

相关文章:

python - 如何在 Python 中创建一个简单的网络连接?

c - 我的服务器通过网络每秒的请求非常低

java - 收到 Netty 消息,写入对象不起作用

python - 如何知道 urllib.urlretrieve 是否成功?

c - printf 的签名是什么?

node.js - 列出聊天室中的用户

c++ - Pro*C 传递参数数组

objective-c - 当 NSStream 失去连接时如何重新连接?

c - 通过互联网打开与外国主机的连接的C语言命令是什么

c - 在 C 中打印 Unicode 符号