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. | [reply] |
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
| [reply] [d/l] |
do a fork(), then do an exec(). the exec() will only replace the fork()'ed child.
| [reply] |