diff -up cups-1.5b1/scheduler/main.c.pid cups-1.5b1/scheduler/main.c --- cups-1.5b1/scheduler/main.c.pid 2011-05-18 22:44:16.000000000 +0200 +++ cups-1.5b1/scheduler/main.c 2011-05-23 18:01:20.000000000 +0200 @@ -311,6 +311,8 @@ main(int argc, /* I - Number of comm * Setup signal handlers for the parent... */ + pid_t pid; + #ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ sigset(SIGUSR1, parent_handler); sigset(SIGCHLD, parent_handler); @@ -334,7 +336,7 @@ main(int argc, /* I - Number of comm signal(SIGHUP, SIG_IGN); #endif /* HAVE_SIGSET */ - if (fork() > 0) + if ((pid = fork()) > 0) { /* * OK, wait for the child to startup and send us SIGUSR1 or to crash @@ -346,7 +348,15 @@ main(int argc, /* I - Number of comm sleep(1); if (parent_signal == SIGUSR1) + { + FILE *f = fopen ("/var/run/cupsd.pid", "w"); + if (f) + { + fprintf (f, "%d\n", pid); + fclose (f); + } return (0); + } if (wait(&i) < 0) {