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

Try exec:

"This function terminates the currently running Perl script by executing another program in place of itself."

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

  • Comment on Re: Starting a process in the background that lives after perl dies.
  • Download Code

Replies are listed 'Best First'.
Re: Re: Starting a process in the background that lives after perl dies.
by ehdonhon (Curate) on Nov 08, 2001 at 23:01 UTC
    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.

      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

      do a fork(), then do an exec(). the exec() will only replace the fork()'ed child.