У меня есть некоторый код Perl, который выполняет сценарий оболочки для нескольких параметров, чтобы упростить, я просто предположу, что у меня есть код, который выглядит следующим образом:Как я могу заставить Perl ждать дочерних процессов, запущенных в фоновом режиме с помощью system()?
for $p (@a){
system("/path/to/file.sh $p&");
}
Я хотел бы сделать еще несколько вещей после это, но я не могу найти способ дождаться завершения всех дочерних процессов, прежде чем продолжить.
Преобразование кода для использования fork() будет затруднительным. Разве нет более простого пути?
Вам нужен фактический код возврата из файла file.sh? Можете ли вы изменить сценарий так, чтобы он записывался в файл по завершении? – mkb
Почему было бы сложно преобразовать код в fork? Скрыть все детали в подпрограмме. Вы можете даже переопределить system(), чтобы вместо этого вызывать свою новую подпрограмму. –
Я, вероятно, просто разделил эту часть на отдельный скрипт, который делает разветвление, и вызовет это из системного вызова ... –