C 识别子进程的子进程?
如何在子进程及其子进程之间进行标识C 识别子进程的子进程?,c,fork,C,Fork,如何在子进程及其子进程之间进行标识 pid_t pid = fork(); if (pid == 0) // child 1 { int pid2 = fork(); if (pid2 == 0)// child of child 1 { .... 我们如何区分子1及其子级?它们都有相同的pid 0 fork()返回值: 0-在子进程中; PID->父进程中的子PID-1->错误 您可以通过getpid() 您的代码包含一些详细信息: pid_t pid = for
pid_t pid = fork();
if (pid == 0) // child 1
{
int pid2 = fork();
if (pid2 == 0)// child of child 1
{ ....
我们如何区分子1及其子级?它们都有相同的pid 0
fork()
返回值:
0-在子进程中;
PID->父进程中的子PID-1->错误
您可以通过getpid()
您的代码包含一些详细信息:
pid_t pid = fork();
if (pid == 0) // child 1
{
// child process
pid_t p = getpid(); // Child process pid
int pid2 = fork();
if (pid2 == 0) {
// child of child process
pid_t p = getpid(); // Child of child process pid
} else if (pid2 > 0) {
// Still child process
//pid2 -> child of child PID
}
} else if (pid > 0) {
// Still main process
// pid -> child PID
pid_t p = getpid(); // Main process pid
}
我不确定我是否理解你的问题。孙辈的
pid
和pid2
均为0。直接子项只有pid
为0。如果pid2
为零,则您在“孙子”中,即子项的子项。无论您何时何地调用fork
,也不管您对孩子的数量有多深。如果fork
返回零,则您处于名为fork
的进程的子进程中。是的,但是是否有标识我们处于哪个级别的id?这是第一个还是第n个孩子?
pid_t pid = fork();
if (pid == 0) // child 1
{
// child process
pid_t p = getpid(); // Child process pid
int pid2 = fork();
if (pid2 == 0) {
// child of child process
pid_t p = getpid(); // Child of child process pid
} else if (pid2 > 0) {
// Still child process
//pid2 -> child of child PID
}
} else if (pid > 0) {
// Still main process
// pid -> child PID
pid_t p = getpid(); // Main process pid
}