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

11 Comments

  1. Mike says:

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

  2. Joe Shaw says:

    Ok, the obvious question: how does this work?

  3. For those who can’t guess, this is an upstart feature.

  4. BT says:

    Can U give us (poor stick in the mud) a clue ?
    What the heck does it do ? How?

  5. This is incredibly cool!

    Can upstart distinguish forks used to daemonize from forks used to execute external helpers? What would ’start postfix’ look like?

  6. Rudd-O says:

    This is A-WE-SO-ME, Scott!

  7. [...] celebratory blog post demonstrated that Upstart is now able to supervise processes that fork into the background, as most [...]

  8. [...] forking as before. As I’ve talked about before, Upstart can supervise process that fork, and it will wait for that to happen before [...]

  9. keesj says:

    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?

Leave a Reply