C 如何使用Fork()只创建两个子进程,这两个子进程都有下两个子进程? #包括 #包括 #包括 int main(){ printf(“父项:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid0=fork(); if(pid0==0){ //儿童1 printf(“子1:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid2=fork(); 如果(pid2==0){ //儿童11 printf(“孩子11:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid2>0){ //儿童1 pid_t pid3=fork(); 如果(pid3==0){ //儿童12 printf(“子12:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid3>0){ //儿童1 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则如果(pid0>0){ //专利 pid_t pid1=fork(); 如果(pid1==0){ //儿童2 printf(“子2:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid4=fork(); 如果(pid4==0){ //儿童21 printf(“孩子21:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid4>0){ //儿童2 pid_t pid5=fork(); 如果(pid5==0){ //孩子22 printf(“子22:my pid:%d my ppid:%d\n”,getpid(),getppid()); }否则如果(pid5>0){ //儿童2 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则如果(pid1>0){ //母公司 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } 返回0; }
有没有办法只从父进程创建两个子进程,这两个子进程都有下两个子进程?我尝试过类似的方法,但PPID对家长PID不正确。C 如何使用Fork()只创建两个子进程,这两个子进程都有下两个子进程? #包括 #包括 #包括 int main(){ printf(“父项:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid0=fork(); if(pid0==0){ //儿童1 printf(“子1:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid2=fork(); 如果(pid2==0){ //儿童11 printf(“孩子11:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid2>0){ //儿童1 pid_t pid3=fork(); 如果(pid3==0){ //儿童12 printf(“子12:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid3>0){ //儿童1 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则如果(pid0>0){ //专利 pid_t pid1=fork(); 如果(pid1==0){ //儿童2 printf(“子2:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); pid_t pid4=fork(); 如果(pid4==0){ //儿童21 printf(“孩子21:我的pid:%d我的ppid:%d\n”,getpid(),getppid()); }否则如果(pid4>0){ //儿童2 pid_t pid5=fork(); 如果(pid5==0){ //孩子22 printf(“子22:my pid:%d my ppid:%d\n”,getpid(),getppid()); }否则如果(pid5>0){ //儿童2 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则如果(pid1>0){ //母公司 }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } }否则{ fprintf(stderr,“Fork不工作”\n); 返回-1; } 返回0; },c,C,有没有办法只从父进程创建两个子进程,这两个子进程都有下两个子进程?我尝试过类似的方法,但PPID对家长PID不正确。 ...............................................................................................................................................................................................
.............................................................................................................................................................................................................................................................................................................................................................到目前为止你试过什么?是的,有这样一种方法。
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main() {
printf("Parent:my pid: %d my ppid: %d\n",getpid(),getppid() );
pid_t pid0 = fork();
if (pid0 == 0) {
//child 1
printf("child 1:my pid: %d my ppid: %d\n",getpid(),getppid() );
pid_t pid2 = fork();
if (pid2 == 0) {
//child 11
printf("child 11:my pid: %d my ppid: %d\n",getpid(),getppid() );
}else if (pid2 > 0) {
//child 1
pid_t pid3 = fork();
if (pid3 == 0) {
//child 12
printf("child 12:my pid: %d my ppid: %d\n",getpid(),getppid() );
}else if (pid3 > 0) {
//Child 1
}else{
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
}else{
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
}else if (pid0 > 0) {
//patent
pid_t pid1 = fork();
if (pid1 == 0) {
//child 2
printf("child 2:my pid: %d my ppid: %d\n",getpid(), getppid() );
pid_t pid4 = fork();
if (pid4 == 0) {
//child 21
printf("child 21 :my pid: %d my ppid: %d\n",getpid(),getppid() );
}else if (pid4 > 0) {
//child 2
pid_t pid5 = fork();
if (pid5 == 0) {
//child 22
printf("child 22 :my pid: %d my ppid: %d\n",getpid(),getppid() );
}else if (pid5 > 0) {
//child 2
}else{
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
}else{
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
}else if (pid1 > 0) {
//parent
}else{
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
}else {
fprintf(stderr, "Fork doesn't work\n" );
return -1;
}
return 0;
}