Portál AbcLinuxu, 16. července 2025 07:56


Dotaz: perl spustenie viacej procedur naraz

30.8.2005 13:47 janci | skóre: 5
perl spustenie viacej procedur naraz
Přečteno: 93×
Odpovědět | Admin
Zdravim, potreboval by som v perlovskom scripte spustit vedla seba (subezne) 3 procedury, po ich skonceni by mala nasledovat stvrta. Urichlil by som tak ukoncenie scriptu ktory trva asi 5 min. Vie mi niekto poradit ? Viem ze by to malo ist cez fork, no nerozumiem strukture tohto prikazu.

tieto by mali ist spolu (teraz su pisane pod sebou): & lsfbvol; & lsrank; & lshostconnect; & showvolgrp; & cap;

tento by sa mal spustit posledny ked dobehnu predch. & disk;

DIK
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.8.2005 14:05 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co konkrétně vám není na příkazu fork a wait (resp. waitpid) jasné?
30.8.2005 14:50 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Tak to by snad bylo whodnější odkázat na fork, wait a waitpid. Krom toho je tu hned k dispozici celý tutoriál o použití. A osobně bych místo waitpid radši použil odchycení signálu CHLD viz. perlipc.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
30.8.2005 15:18 janci | skóre: 5
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
napiste mi ako to mam napisat do skriptu miesto mojich riadkov.

fork ... lsfbvol, ...?
30.8.2005 15:21 Peter Rychnavsky
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Ešte, že si nepoužil výkričník...
30.8.2005 15:52 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Zadarmo ani kuře ... Krom toho, proč to najednou děláš v perlu? Vždyť v bashi je to
lsfbvol & lsrank & lshostconnect & showvolgrp & cap & wait; disk
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
30.8.2005 16:04 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Třeba takhle
foreach (qw(lsfbvol lsrank lshostconnect showvolgrp cap)) {
  next unless fork;
  exec $_;
}
while(wait != -1){}
system 'disk'
P.S.: Schv8ln2 jsem to napsal takto pěkně čitelně :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
30.8.2005 16:39 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
sorry, je tam chybka místo
next unless fork;
má být
next if fork;
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
31.8.2005 09:28 janci | skóre: 5
Rozbalit Rozbalit vše perl spustenie viacej procedur naraz
dakujem Ti velmi pekne, este som to neskusal, no aspon vylustim ako sa fork pouziva. Priklady ktore su v knihach idu bez problemov, akonahle clovek nieco chce tak mu to nefunguje. Zacal som s perlom len pred tyzdnom, neako mi nevonia. Vacsinu skriptov pisem v shell. No zistil som ze perl je tak trochu pruznejsi v niektorych veciach. Tak dik. Niekedy na pive ...
31.8.2005 10:01 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Nz. Perl je mocný nástroj a jako každý mocný nástroj je i nebezpečný při špatném zacházení. Pokud si nehodláš dávat pozor na jeho ostré hrany, tak je asi lepší python. I když některým nepomůže ani to. Jinak ten můj příklad nemá ošetřeno, že se nepodaří forknout, že ty programy selžou a pod.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.9.2005 13:08 janci | skóre: 5
Rozbalit Rozbalit vše perl spustenie viacej procedur naraz
Mas pravdu, skusil som ten tvoj script, trochu ho upravil a aj tak mi robi hluposti. Spusta neako vela procedur. Skus :

TAKTO VYZERA SCRIPT

# cat scfork.pl #!/usr/bin/perl sub r1 { @P=`ls -lR / > /dev/null 2>&1`; print "prva:\n"; } sub r2 { @R=`ls -lR / > /dev/null 2>&1`; print "druha:\n"; } sub r3 { @P=`ls -lR / > /dev/null 2>&1`; print "tretia:\n"; } # foreach $K (qw(r1 r2)) { next if fork; &$K; } while(wait != -1){}; & r3;

SAMOTNE SPUSTENIE

# ./scfork.pl druha: prva: druha: tretia: tretia: tretia: tretia: #

Asi som blby, no nepochopil som.
6.9.2005 13:54 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
Nebylo by lepší konečně trošku namáhat mozek a pochopit, co ten fork() vlastně dělá?

... {next if fork; &$K; exit} ...
6.9.2005 13:57 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
... teda aspoň doufám, mě to dneska taky moc nemyslí :-)
6.9.2005 14:11 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: perl spustenie viacej procedur naraz
RTFM! perldoc -f exec a exec(3) Taky by neuškodilo RTFM pod inputboxem komentáře a speciálně si zjistit co dělá tag <pre>.
#!/usr/bin/perl
sub caller_name ($) { local $_ = (caller($_[0]+1))[3]; s/^main:://; $_ }
sub print_start () { print 'start ', caller_name 1, $/ }
sub print_stop () { print 'stop ', caller_name 1, $/ }
sub r1 {
  print_start;
  @R=qx{ls -lR > /dev/null 2>&1};
  print_stop;
}
sub r2 {
  print_start;
  @R=qx{ls -lR > /dev/null 2>&1};
  print_stop;
}
sub r3 {
  print_start;
  @P=qx{ls -lR > /dev/null 2>&1};
  print_stop;
}
foreach $K (qw(r1 r2)) {
  next if fork;
  &$K;
  exit 0;  # stop child
}
while(wait != -1){};
&r3;
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.