如何识别子进程与其子进程?
pid_t pid = fork();
if (pid == 0) // child 1
{
int pid2 = fork();
if (pid2 == 0)// child of child 1
{ ....
我们如何区分孩子1和孩子?他们都有相同的pid 0?
答案 0 :(得分:1)
fork()
返回值: 0 - 在儿童过程中; PID - >父进程中的子PID; -1 - >错误
您可以通过getpid()
if (pid == 0) {
pid_t child_pid = 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
}