in reply to Re: Starting a process in the background that lives after perl dies.
in thread Starting a process in the background that lives after perl dies.

Thanks, but I don't want to exec.. my Perl script has other things that it needs to do. Some times I want to be able to start other processes up at the same time. This is mainly needed in a CGI environment, but not just for CGI.
  • Comment on Re: Re: Starting a process in the background that lives after perl dies.

Replies are listed 'Best First'.
Re: Re: Re: Starting a process in the background that lives after perl dies.
by Asim (Hermit) on Nov 08, 2001 at 23:26 UTC

    perlipc has some stuff you may want to try :

    Complete Dissociation of Child from Parent In some cases (starting server processes, for instance) you'll want to + complete dissociate the child process from the parent. The easiest w +ay is to use: use POSIX qw(setsid); setsid() or die "Can't start a new session: $!"; However, you may not be on POSIX. The following process is reported to + work on most Unixish systems. Non-Unix users should check their Your +_OS::Process module for other solutions. * Open /dev/tty and use the TIOCNOTTY ioctl on it. See tty(4) for +details. * Change directory to / * Reopen STDIN, STDOUT, and STDERR so they're not connected to the + old tty. * Background yourself like this: fork && exit; * Ignore hangup signals in case you're running on a shell that doe +sn't automatically no-hup you: $SIG{HUP} = 'IGNORE'; # or whatever you'd like

    The docs are a little different than an eariler version I found on the Net, so give it a try and see if that solves your problem. If not, look at the perlipc manpage excerpted from the Activestate's Perl UNIX user's e-mail list for a longer program.

    ----Asim, known to some as Woodrow.

    Edit: chipmunk 2001-11-08

Re: Re: Re: Starting a process in the background that lives after perl dies.
by Anonymous Monk on Nov 09, 2001 at 05:38 UTC
    do a fork(), then do an exec(). the exec() will only replace the fork()'ed child.