これが私のコードで、このプログラムを実行するために実行します./2c 10 5
— 引数 1 に 10、引数 2 に 5 です。プログラムは 10 個の子プロセスを実行し、5 番目の子プロセスが別の子プロセスを作成しますが、この場合、私の ppid は常に同じです。それは決して変わらない。すべての子供に同じ ppid を与えました
私が得る出力は次のとおりです。
pid: 1 ppid: 6 pid: 2 ppid: 6 pid: 3 ppid: 6 pid: 4 ppid: 6 pid: 5 ppid: 6`` ピッド: 6 ピッド: 6 pid: 7 ppid: 6 pid: 8 ppid: 6 pid: 9 ppid: 6 pid: 10 ppid: 6
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[],char *envp[])
{
int i,a;
a=getpid();
int pid;
int child,child2;
child=atoi(argv[1]);
child2=atoi(argv[2]);
if(atoi(argv[2])>atoi(argv[1]))
{
printf("arg2 is bigger than arg1!");
exit(1);
}
for(i=1;i<=child;i++)
{
pid=fork();
if(i=child2 && pid==0)
{
pid=fork();
break;
}
if(pid==0)
break;
}
if(getpid()!=a)
if(getppid()==a)
{
printf("PID: %d PPID: %d\n",getpid(),getppid());
sleep(5);
exit(0);
}
for(i=1;i<=child+1;i++)
wait(0);
return 0;
}
これは私のコードです。誰かがこれをテストして、このサイトで出力を送信できます...比較できます..コンパイルするには、gcc test.c -o test を使用し、./test 10 5 を実行します...
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[], char *envp[])
{
int i,a;
a=getpid();
pid_t pid;
int child,child2;
child=atoi(argv[1]);
child2=atoi(argv[2]);
if(atoi(argv[2])>atoi(argv[1]))
{
printf("2nd argumentet is bigger than 1st");
exit(1);
}
for(i=1;i<=child;i++)
{
pid=fork();
if(i==child2 && pid==0)
{
pid=fork();
break;
}
if(pid==0)
break;
}
if(getpid()!=child2)
{
printf("PID: %d PPID: %d\n",getpid(),getppid());
sleep(5);
exit(0);
}
for(i=0;i<=child+1;i++)
wait(0);
return 0;
}