【问题标题】:why is child process running code meant for parent为什么子进程运行代码意味着父进程
【发布时间】:2021-09-17 04:48:58
【问题描述】:

下面的 sn-p 也由子进程运行,但我不知道为什么,因为据我了解,孩子的 Pid 应该始终为 0,所以没有理由让它在下面做任何事情,但打印“I我是孩子”;

 pid_t child_Pid1 = fork();

 if((int)getpid() == 0) {
 printf("I am child\n");
 } else {
    printf("I am parent\n");
    }

【问题讨论】:

  • 只有当fork()返回时,孩子才存在。它在两个进程中“返回”,父进程和子进程。

标签: c fork


【解决方案1】:

getpid() 总是返回当前进程的 pid,它从不为零,因此在您当前的代码中,两个进程都没有 execlp

您想查看child_Pid1 而不是getpid()。在孩子中,它返回 0 而不是孩子的 pid。

【讨论】:

  • 还应检查child_Pid1 以查看fork() 是否失败。
猜你喜欢
  • 1970-01-01
  • 2017-01-17
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2016-01-14
  • 1970-01-01
相关资源
最近更新 更多