taguti wrote:

> Dear,
> 
> My question is just how to execute another perl script asyncronously.
> system or `` waite until another script will terminated.
> I need a function like Win32::spawn by Dave Roth.
> 
> Schedule-Cron in CPAN is somewhat like, but it is for Perl subroutines.


>From perlipc man page:


   Background Processes

     You can run a command in the background with:

         system("cmd &");

     The command's STDOUT and STDERR (and possibly STDIN, depending on your
     shell) will be the same as the parent's. You won't need to catch SIGCHLD
     because of the double-fork taking place (see below for more details).

   Complete Dissociation of Child from Parent

     In some cases (starting server processes, for instance) you'll want to
     completely dissociate the child process from the parent. This is often
     called daemonization. A well behaved daemon will also chdir() to the root
     directory (so it doesn't prevent unmounting the filesystem containing the
     directory from which it was launched) and redirect its standard file
     descriptors from and to /dev/null (so that random output doesn't wind up on
     the user's terminal).

         use POSIX 'setsid';

         sub daemonize {
             chdir '/'               or die "Can't chdir to /: $!";
             open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
             open STDOUT, '>/dev/null'
                                     or die "Can't write to /dev/null: $!";
             defined(my $pid = fork) or die "Can't fork: $!";
             exit if $pid;
             setsid                  or die "Can't start a new session: $!";
             open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
         }

     The fork() has to come before the setsid() to ensure that you aren't a
     process group leader (the setsid() will fail if you are). If your system
     doesn't have the setsid() function, open /dev/tty and use the "TIOCNOTTY"
     ioctl() on it instead. See the tty(4) manpage for details.

     Non-Unix users should check their Your_OS::Process module for other
     solutions.

perlfaq8:


  How do I start a process in the background?

    You could use

        system("cmd &")

     or you could use fork as documented in the section on "fork" in the perlfunc
     manpage, with further examples in the perlipc manpage.  <more info deleted>



-- 
   ,-/-  __      _  _         $Bill Luebkert   ICQ=162126130
  (_/   /  )    // //       DBE Collectibles   Mailto:[EMAIL PROTECTED]
   / ) /--<  o // //      http://dbecoll.tripod.com/ (Free site for Perl)
-/-' /___/_<_</_</_     Castle of Medieval Myth & Magic http://www.todbe.com/

_______________________________________________
Perl-Unix-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to