【问题标题】:How to obtain the child process PID in C如何在C中获取子进程PID
【发布时间】:2021-05-14 11:14:02
【问题描述】:

为了得到子进程的PID,我这样做了。

pid_t pid;
pid=fork();
if(pid==0){
  //child's work
}else{
  printf("The child's PID is %d",pid);
}

我想从父母那里打印孩子的pid!那么如果我printfpid 或者我需要使用getpid() 可以吗?

【问题讨论】:

  • “很好”是什么意思?代码做你想做的事了吗?
  • 我想打印孩子的 pid,所以这将打印孩子的 pid 或父母??
  • this Google Search 中的第一个匹配完整准确地回答了您的问题。
  • @Rocket fork()getpid() 的文档是怎么说的?
  • 如果在父进程中调用,getpid 将返回父进程的 pid。由于您想要孩子的 pid,因此(在父母中)获取它的最佳方法是 fork 返回的值。

标签: c operating-system fork pid


【解决方案1】:

成功时fork 返回子进程的pid,所以pid 将是子进程的pid,所以我会说它是正确的。

getpid是获取当前进程的pid,所以不适合获取孩子的pid。

【讨论】:

  • 我想从父母那里打印孩子的 pid!所以如果 printf pid 或者我需要使用 getpid() 就可以了
  • @Rocket 不,你不需要getpid,你拥有它的方式是正确的。
【解决方案2】:

我认为这总结了这个问题:

#include <stdio.h>
#include <unistd.h>

int main(){
    pid_t pid;
    pid = fork();
    if(pid == 0){
        printf("In child => Own pid : %d\n", getpid());
        printf("In child => Parent's pid : %d\n", getppid());
    }
    else{
      printf("In Parent => Child's pid is %d\n", pid);
      printf("In Parent => Own pid : %d\n", getpid());
    }
    return 0;   
}

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2021-08-08
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多