Please do read the rules of the forum and donot bump up with questions if they are not promptly answered.
Coming to the point,
monitor program would be a parent process which would fork() to create new child process, better to have some kind of count to control the child process creation ( MAX_CHILD_PROCESS_ALLOWED ), once fork is successful parent gets the child pid, store them in an array or any other data structure, check for the existence of the child by sending kill -0 ( to see if they exist ), or register any signal handlers in the child if any communication needs to be carried over between parent and child.
This is just a pointer and you will have many interesting challenges like daemon -izing, defunct process creation etc.
Give it a shot, post us if you are stuck up somewhere.