скрипт стартира друг скрипт

9 отговора 417 прегледа
#1

скрипт стартира друг скрипт

Здравейте. Имам следният проблем: имам 2 скрипта, единият от които трябва да стартира 2-я, но в същото време да си продължи работата, независимо от 2-я. Ако някой има идея нека я сподели.
Благодаря.

Отговор
в отговор на just_one #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
Отговор
в отговор на sdg #3

Re: скрипт стартира друг скрипт

Необходимо е 1-ят скрипт да продължи да работи без да изчаква 2-я да свърши.

Отговор
в отговор на just_one #4

Re: скрипт стартира друг скрипт

system() ?

Отговор
в отговор на just_one #5

Re: скрипт стартира друг скрипт

Къде в примера някой чака някого?


RTFM!
--sdg
Отговор
в отговор на sdg #6

Re: скрипт стартира друг скрипт

Е как къде? И system и exec очакват някакъв резултат, но 2-я скрипт може да се забави, а това не трябва да влияе на изпълнението на 1-ят.

Отговор
в отговор на just_one #7

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

Отговор
в отговор на vfork #8

Re: скрипт стартира друг скрипт

Е, чак пък грозно

Ако трябва да бъдем съвсем прецизни, някъде преди fork() е добре да има и $SIG{'CHLD'} = 'IGNORE'. Важното беше да се прочете документацията, но явно не се е случило...


RTFM!
--sdg
Отговор
в отговор на just_one #9

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...

Отговор
в отговор на sdg #10

Re: скрипт стартира друг скрипт

E da no ako se cheteshe dokumentaciqta nqmashe da ima koi kakvo da pita

Отговор