Multi threading using fork

Hi,
I have written a code which will run a set of process using
fork.
I want to know from You how can i start another job when one of my job in my loop is completed

My code is

#include<stdio.h>
#include<ctype.h>


main() {
int pid,cid;
ChildProcess();
          pid=getpid();
         printf("pid  : %d\n",pid);

          printf(" FORK DEMO ");
     if(!fork()) {
     cid=getpid();
            printf(" cid  : %d ",cid);
     printf("i m the child process");
     ChildProcess();
     exit(0);
   }

  printf("waiting for child");
   wait(NULL);
  printf(" child finished ");
}
ChildProcess() {
       int i;
       for(i=0;i<10;i++) {
          system("sh runcpty.sh"); //here i wrote code to run  pgms
          printf(" %d ",i);
          sleep(0);
      }
    }

This program will run only start processing 10 programs, But
i want to start another program automatically when one of process out of ten is completed (i.e Multi Tasking)
Can U please solve this problem

I added code tags for readability -- Perderabo

Well, you're not off to very good start here. :frowning:

The text of your post says your program "will run a set of process using fork." But even the comments in your code disagrees with that. When you run system() in a loop as you are doing, you will run one program after another. After the tenth program finishes, the ChildProcess function will return. Then your program finally performs it's first and only fork() which is a demo. And then it exits.

To get the ball rolling, you need to call fork() 10 times in a loop. And each child process will need run one of your jobs. One of the exec() calls would be much better than system().

I think that you should get this much working first.

But basicly you will need to install a signal handler that catches SIGCHLD to detect the death of a child.