Hi can someone help me please with multiple fork problem. I have problem with creating processes going child by child...It means I create one child after it a create another child ... etc.
Somethint like this scheme:
------- ------- -------- --------
|child_1 | ->|child_2| ->|child_3 | -> | child_100|
-------- ------- -------- ........ --------
Here is my code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void Fork_Children (int N_Children)
{
int i;
int pid;
for (i = 1; i <= N_Children; i++)
{
pid = fork();
if (pid == 0)
{
printf("I am a child: %d PID: %d\n",i, getpid());
return;
}
}
}
int main (int argc, char *argv[])
{
Fork_Children(atoi(argv[1]));
return 0;
}
|
and I was expecting this on output:
I am a child: 1 PID: 1215
I am a child: 2 PID: 1216
I am a child: 3 PID: 1217
I am a child: 4 PID: 1218
I am a child: 5 PID: 1219
I am a child: 6 PID: 1215
I am a child: 7 PID: 1216
I am a child: 8 PID: 1217
I am a child: 9 PID: 1218
I am a child: 10 PID: 1219
I am a child: 11 PID: 1215
I am a child: 12 PID: 1216
I am a child: 13 PID: 1217
I am a child: 14 PID: 1218
I am a child: 15 PID: 1219
I am a child: 16 PID: 1215
I am a child: 17 PID: 1216
I am a child: 18 PID: 1217
I am a child: 19 PID: 1218
I am a child: 20 PID: 1219
But i get this:
I am a child: 1 PID: 1950
I am a child: 2 PID: 1951
I am a child: 3 PID: 1952
I am a child: 4 PID: 1953
I am a child: 5 PID: 1954
I am a child: 6 PID: 1955
I am a child: 7 PID: 1956
I am a child: 8 PID: 1957
I am a child: 9 PID: 1958
I am a child: 10 PID: 1959
I am a child: 11 PID: 1960
I am a child: 12 PID: 1961
I am a child: 13 PID: 1962
I am a child: 14 PID: 1963
I am a child: 15 PID: 1964
@ubuntu:~$ I am a child: 16 PID: 1965
I am a child: 17 PID: 1966
I am a child: 20 PID: 1969
I am a child: 18 PID: 1967
I am a child: 19 PID: 1968
thank you for your help in advance.