Есть перловый скрипт (в примере ниже - 12.pl) который через `` (обратные кавычки) запускает скрипт на шелле (1.sh), который, в свою очередь, в бэкграунде (&) запускает еще один шелловый скрипт (2.sh):-- 12.pl
#!/usr/bin/perl
my $gg = `/dir/1.sh`;======================
-- 1.sh :
#!/bin/sh/dir/2.sh &
exit 0======================
-- 2.sh :
#!/bin/shsleep 5
exit 0======================
В результате, выполнение в перле `/dir/1.sh` занимает 5 секунд - т.е. он ждет завершения 2.sh несмотря на то, что 1.sh уже закончился.
Можно ли сделать так, чтобы `/dir/1.sh` завершился на момент выхода (exit 0) из 1.sh? (т.е. не ждать 2.sh)ps. $ perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi
Попробуйте использовать system вместо ``. Там, правда, труднее перехватить вывод скриптов, но они у вас, похоже, ничего и не выводят.Как вариант, в перловой программе можно сделать fork, и пусть ждёт дочерний процесс.
> Попробуйте использовать system вместо ``. Там, правда, труднее перехватить вывод скриптов,
> но они у вас, похоже, ничего и не выводят.Это да, с system работает. Непонятно только - почему такая разница?
> Как вариант, в перловой программе можно сделать fork, и пусть ждёт дочерний
> процесс.ОК, попробую еще fork..