fork(){
i=0
count=0
while (($count<5))
do
fpfunction &
pid=$!
#Ensure the pid is available
if [ -z "$pid" ]; then
echo "IS NULL"
else
Array[$i]=$pid
echo "PID is $pid"
fi
wait [$pid]
i=$((i+1))
count=$((count+1))
done
echo "PID: ${Array[*]}"
}
Функция fpfunction() только эхо-строка, поэтому я не пишу ее здесь.команда wait в сценарии оболочки
Мое понимание wait() будет ждать завершения дочернего процесса, а затем вернуть значение.
Я положил wait() в свой скрипт, потому что хочу, чтобы все дочерние процессы были закончены.
Однако ошибка
не PID или действительного задания спецификации
Является ли мое понимание не так? пожалуйста, дайте мне знать, как исправить эту проблему.
Большое спасибо.
Я думаю, что выполнение асинхронной команды бессмысленно! Здесь подпроцесс начался в фоновом режиме, а затем сразу же ждал окончания, поэтому вместо части кода используйте просто 'fpfunction', чтобы запустить подпроцесс и дождаться его. Если вы хотите ограничить количество запущенных процессов, я предлагаю использовать 'make'. – TrueY