fork/system/child processes

Don dnrlinux at san.rr.com
Wed Dec 3 05:23:28 UTC 2003


This isn't fedora-specific...

I have an application that MUST run forever.... if it crashes, dies,
ends for any reason I want it to start again.

One exception, I want to be able to stop it with a kill term...

So, my solution is a very simple loop...

for (;1==1;) {
    system("command-to-run");
    #do some sort of logging to show command-to-run ended unexpectedly
}

If my loop program gets a sig term, I want to trap that, kill the child
process and then exit gracefully.

I can trap the signal, but how do I get the pid of the child process
(command-to-run)

I tried:
for (;1==1:)
   $newpid = fork;
   if ($newpid) {
	# parent...
	wait;
	#log unexpected end of command-to-run
   } else {
	# child ...
        system(command-to-run);
	exit;
   }
}

but in that case $newpid is the pid of the child that issues "system"...
not the pid of "command-to-run". (expected... but not what I want/need.)

Any suggestions?

Thank you,
Don







More information about the users mailing list