скрипт стартира друг скрипт
9 отговора
417 прегледа
скрипт стартира друг скрипт
Здравейте. Имам следният проблем: имам 2 скрипта, единият от които трябва да стартира 2-я, но в същото време да си продължи работата, независимо от 2-я. Ако някой има идея нека я сподели.
Благодаря.
Благодаря.
Re: скрипт стартира друг скрипт
perldoc -f fork
perldoc -f exec
Или, вкратце, фрагмент от първия скрипт:
my $pid = fork();
if (0 == $pid) # child
{
exec("script2.pl","arg0","arg1") or die "Could not exec script2: $!";
}
# child ends, script2 executed
unless(defined($pid)) { print STDERR "Could not fork: $!"; }
RTFM!
--sdg
perldoc -f exec
Или, вкратце, фрагмент от първия скрипт:
my $pid = fork();
if (0 == $pid) # child
{
exec("script2.pl","arg0","arg1") or die "Could not exec script2: $!";
}
# child ends, script2 executed
unless(defined($pid)) { print STDERR "Could not fork: $!"; }
RTFM!
--sdg
Re: скрипт стартира друг скрипт
Необходимо е 1-ят скрипт да продължи да работи без да изчаква 2-я да свърши.
Re: скрипт стартира друг скрипт
Е как къде? И system и exec очакват някакъв резултат, но 2-я скрипт може да се забави, а това не трябва да влияе на изпълнението на 1-ят.
Re: скрипт стартира друг скрипт
Moze bi imash predvid (sdg e napisal (makar i sus syntax err, i grozno)) "otdelqne" na child ot parent process:
###start
use POSIX;
$|++; #for the test
$pid = fork;
die "can't fork: $!" unless defined$pid;
if($pid == 0){
POSIX::setsid or die "can't start a new session: $!";
exec("second_script"); #we do not want a return value
}
#here goes the rest of the first_script
print ++$c, "\n" and sleep 1 for 1..3;
###end
makar che tova bi moglo da vurvi samo ako ne minesh prez:
$^O =~ /win32/ #t.e. pomiqta
###start
use POSIX;
$|++; #for the test
$pid = fork;
die "can't fork: $!" unless defined$pid;
if($pid == 0){
POSIX::setsid or die "can't start a new session: $!";
exec("second_script"); #we do not want a return value
}
#here goes the rest of the first_script
print ++$c, "\n" and sleep 1 for 1..3;
###end
makar che tova bi moglo da vurvi samo ako ne minesh prez:
$^O =~ /win32/ #t.e. pomiqta
Re: скрипт стартира друг скрипт
Е, чак пък грозно
Ако трябва да бъдем съвсем прецизни, някъде преди fork() е добре да има и $SIG{'CHLD'} = 'IGNORE'. Важното беше да се прочете документацията, но явно не се е случило...
RTFM!
--sdg
Ако трябва да бъдем съвсем прецизни, някъде преди fork() е добре да има и $SIG{'CHLD'} = 'IGNORE'. Важното беше да се прочете документацията, но явно не се е случило...
RTFM!
--sdg
Drug wariant
script1.pl
# Redowe predi
...
system("script2.pl param1 param2 param3 &");
# Redowe sled
...
W tazi situacia script2.pl triabwa da e izpalnim fail po wsitchki prawila na OS-a. Puskal sam po 50 instancii na script2 ot rabotesht script1 - sprawia se bez problem. Ne si spomniam da sam go testwal na WIN*, no sigurno shte warvi...
# Redowe predi
...
system("script2.pl param1 param2 param3 &");
# Redowe sled
...
W tazi situacia script2.pl triabwa da e izpalnim fail po wsitchki prawila na OS-a. Puskal sam po 50 instancii na script2 ot rabotesht script1 - sprawia se bez problem. Ne si spomniam da sam go testwal na WIN*, no sigurno shte warvi...
Re: скрипт стартира друг скрипт
E da no ako se cheteshe dokumentaciqta nqmashe da ima koi kakvo da pita