gpt4 book ai didi

c - 使用 C 从父进程获取子进程 ID

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:15 27 4
gpt4 key购买 nike

我正在尝试编写一个 C 程序,其中我有一个创建两个 child 的 parent 。

我的任务是检索父进程和两个子进程的进程 ID。为此,我一直在使用 getpid()

现在我被要求从 parent 那里获取 child 的信息。我不明白我该怎么做。比如我怎样才能从 parent 那里获得 child 的处理 ID?

我现在有这个(简体)

fork1 = fork();

if (fork1 < 0)
fork error
else if (fork1 == 0) {
child 1
use getpid()
use getppid()
} else {
fork2 = fork();

if (fork2 < 0)
fork error
else if (fork2 == 0) {
child 2
use getpid()
use getppid()
} else
parent again
}

最佳答案

经过一分钟的谷歌搜索后,我找到了 this页面,其中写有您需要的所有内容:

System call fork() is used to create processes. It takes no arguments and returns a process ID.

我突出显示了对您来说很重要的部分,因此您无需执行任何操作即可获取子进程 ID。您已经在 fork1fork2 中拥有了它们!

下面是一些代码,可以打印父子进程的 PID。

#include <stdio.h>

int main() {
int fork1 = fork();
if (fork1 < 0) {
printf("error\n");
} else if (fork1 == 0) {
printf("I'm child 1\n");
printf("child 1: parent: %i\n", getppid());
printf("child 1: my pid: %i\n", getpid());
} else {
int fork2 = fork();
if (fork2 < 0) {
printf("error\n");
} else if (fork2 == 0) {
printf("I'm child 2\n");
printf("child 2: parent: %i\n", getppid());
printf("child 2: my pid: %i\n", getpid());
} else {
printf("I'm the parent\n");
printf("The PIDs are:\n");
printf("parent: %i\n", getpid());
printf("child 1: %i\n", fork1);
printf("child 2: %i\n", fork2);
}
}
return 0;
}

关于c - 使用 C 从父进程获取子进程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com