Unix - simple fork illustration
Script started on Wed Apr 30 12:08:13 1997
sh-2.00$ cat fork.c
/* fork.c - fork a child process */
#include <stdio.h>
void main()
{
int fork_return;
int count = 0;
/* getpid() returns the process id of this process. */
printf("Process %d about to fork a child.\n", getpid() );
fork_return = fork();
if( fork_return < 0)
{
printf("Unable to create child process, exiting.\n");
exit(-1);
}
/* BOTH processes will do this! */
system("ps");
if( fork_return > 0)
/* Then fork_return is the pid of the child process and I am
the parent. Start printing a's. */
{
printf("Created child process %d.\n", fork_return);
while( count++ < 800)
{
putchar('a');
if(count % 80 == 0){
putchar('\n');
sleep(2);
}
}
}
else
/* A 0 return tells me that I am the child. Print b's */
{
while(count++ < 800)
{
putchar('b');
if(count % 80 == 0){
putchar('\n');
sleep(2);
}
}
}
}
sh-2.00$ fork
Process 19643 about to fork a child.
PID TT S TIME COMMAND
19632 p1 S 0:00.36 -bash (bash)
19638 p1 S + 0:00.07 script showem
19640 p1 S + 0:00.03 script showem
19641 p2 S 0:00.15 sh -is
19643 p2 S + 0:00.04 fork
19644 p2 S + 0:00.01 fork
19645 p2 S + 0:00.04 sh -c ps
19646 p2 R + 0:00.04 sh -c ps
19648 p2 R + 0:00.00 sh -c ps
PID TT S TIME COMMAND
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
19632 p1 S 0:00.36 -bash (bash)
19638 p1 S + 0:00.07 script showem
19640 p1 R + 0:00.03 script showem
19641 p2 S 0:00.15 sh -is
19643 p2 S + 0:00.04 fork
19644 p2 S + 0:00.01 fork
19645 p2 R + 0:00.04 sh -c ps
19646 p2 S + 0:00.04 sh -c ps
Created child process 19644.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
sh-2.00$ exit
exit
script done on Wed Apr 30 12:08:47 1997