Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 识别子进程的子进程?_C_Fork - Fatal编程技术网

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
 }