вы можете сделать это следующим образом (форк в родительском, exec в дочернем):
for my $cmd qw(command1 command2 command3) {
exec $cmd unless fork
}
способ, которым работает exec $cmd unless fork
, заключается в том, что fork
вернет истинное значение в родительском(идентификатор процесса) и вернет ложное значение в дочернем элементе, поэтому exec $cmd
запускается только в том случае, если fork
возвращает ложное значение (иначе в дочернем элементе).
или если вы хотите следить запроцесс выполняется одновременно:
my @procs;
for my $cmd qw(cmd1 cmd2 cmd3) {
open my $handle, '-|', $cmd or die $!;
push @procs, $handle;
}
, тогда вы можете прочитать элемент @procs
, если вам нужно.
Или взгляните на один из многих модулей cpan, например:Forks::Super
, которые обрабатывают детали управления вилкой.