Команда Bash `wait`, ожидающая более 1 PID для завершения выполнения

Я недавно опубликовал вопрос, спрашивающий, возможно липредотвратить повторное использование PID.

Пока что ответ, похоже, нет. (Что хорошо.)

Тем не менее, пользовательДиего Торрес Милано добавил ответ на этот вопрос, и мой вопрос здесь касается этого ответа.

Диего ответил:

Если вы боитесь повторно использовать PID, чего не произойдет, если вы будете ждать, как объясняют другие ответы, вы можете использовать

echo 4194303 > /proc/sys/kernel/pid_max

уменьшить свой страх ;-)

Я на самом деле не понимаю, почему Диего использовал номер4194303 здесь, но это другой вопрос.

Насколько я понимаю, у меня была проблема со следующим кодом:

for pid in "${PIDS[@]}"
do
    wait $pid
done

Проблема в том, что у меня есть несколько PID в массиве, и что цикл for будет запускатьwait Команда последовательно с каждым PID в массиве, однако я не могу предсказать, что процессы будут завершены в том же порядке, в котором их PID хранятся в этом массиве.

то есть; следующиемог бывает:

Начать ожидание PID в индексе массива 0Процесс с PID в индексе 1 массива завершаетсяВ системе выполняются новые задания, в результате чего PID, который сохраняется в индексе 1 массива PID, являетсяповторно используется для другого процессаwait заканчивается как PID в выходах индекса массива 0Начать ожидание PID в индексе массива 0,кроме того, что теперь это другой процесс, и мы понятия не имеем, что это такоеПроцесс, который был запущен, который повторно использовал PID, которыйwait в настоящее время ждетникогда завершается. Возможно, это PID почтового сервера или что-то, что запустил системный администратор.wait продолжает ждать, пока не будет найдена следующая серьезная ошибка linux и система не будет перезагружена или не произойдет сбой питания

Диего сказал:

что не произойдет, если вы будете ждать, пока другие ответы

то есть; что ситуация, которую я описал выше, не может произойти.

Диего прав?

Если так, то почему ситуация, о которой я говорил выше, не может возникнуть?

Или Диего не прав?

Если так, тогда я выложу новый вопрос позже сегодня ...Дополнительные примечания

Мне пришло в голову, что этот вопрос может сбивать с толку, если вы не знаете, что PID являются PID процессов, запущенных в фоновом режиме. то есть;

my_function &
PID="$!"
PIDS+=($PID)

Ответы на вопрос(2)

Ваш ответ на вопрос