Supervising forking processes


quest /tmp# cat test.c
#include <sys/types.h>

#include <stdlib.h>
#include <unistd.h>

int
main (int   argc,
      char *argv[])
{
        pid_t pid;

        pid = fork ();
        if (pid > 0)
                exit (0);

        pid = fork ();
        if (pid > 0)
                exit (0);

        pause ();
        exit (0);
}
quest /tmp# gcc -Wall -g -O0 -o test test.c

quest /tmp# cat /etc/event.d/test
wait for daemon
exec /tmp/test

quest /tmp# start test
test (#0) goal changed from stop to start
test (#0) state changed from waiting to starting
event_new: Pending starting event
Handling starting event
event_finished: Finished starting event
test (#0) state changed from starting to pre-start
test (#0) state changed from pre-start to spawned
process_spawn: Spawned main process 6380 for test (#0)
Active test (#0) main process (6380)
test (#0) main process (6380) forked new child 6381
test (#0) main process (6381) forked new child 6382
test (#0) state changed from spawned to post-start
test (#0) state changed from post-start to running
event_new: Pending started event
Handling started event
event_finished: Finished started event

12 thoughts on “Supervising forking processes

  1. Mike

    This looks intriguing, but there’s not context. What command/package is this about? Where is this ‘start’ command from?

  2. Pingback: Scott James Remnant » Blog Archive » How to (and why) supervise forking processes

  3. Pingback: Ubuntu Index » Blog Archive » Scott James Remnant: How to (and why) supervise forking processes

  4. Pingback: Scott James Remnant » Blog Archive » Upstart 0.5: Job Lifecycle

  5. keesj

    Hello Scott on 6th December 2007, 07:21 pm you wrote this article

    I have upstart 0.3.9 here and this feature seams non existent didn’t the feature make it to the release?

Comments are closed.