Comando Bash `wait`, aguardando mais de 1 PID para concluir a execução

Postei recentemente uma pergunta perguntando se era possívelimpedir que os PID sejam reutilizados.

Até agora, a resposta parece ser não. (O que é bom.)

No entanto, o usuárioDiego Torres Milano adicionei uma resposta a essa pergunta, e minha pergunta aqui é referente a essa resposta.

Diego respondeu:

Se você tem medo de reutilizar PIDs, o que não acontecerá se você esperar como outras respostas explicam, você pode usar

echo 4194303 > /proc/sys/kernel/pid_max

para diminuir o seu medo ;-)

Na verdade, eu não entendo por que Diego usou o número4194303 aqui, mas isso é outra questão.

Meu entendimento era que eu tinha um problema com o seguinte código:

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

O problema é que tenho vários PIDs em uma matriz e que o loop for executará owait comando sequencialmente com cada PID na matriz, no entanto, não posso prever que os processos serão concluídos na mesma ordem em que seus PIDs são armazenados nessa matriz.

ie; Os seguintespoderia acontecer:

Comece a aguardar PID no índice de matriz 0Processo com PID no índice 1 da matriz terminaNovos trabalhos são executados no sistema, resultando no PID armazenado no índice 1 da matriz PIDreutilizado para outro processowait termina como PID na saída do índice 0 da matrizComece a aguardar o PID no índice de matriz 0,exceto que agora é um processo diferente e não temos ideia do que éO processo executado que reutilizou o PID quewait está atualmente esperando porNunca termina. Talvez seja o PID de um servidor de email ou algo que um administrador do sistema iniciou.wait continua esperando até que o próximo bug grave do linux seja encontrado e o sistema seja reiniciado ou haja uma queda de energia

Diego disse:

o que não acontecerá se você esperar como outras respostas explicam

ie; que a situação que descrevi acima não pode acontecer.

Diego está correto?

Se sim, por que a situação descrita acima não pode ocorrer?

Ou Diego não está correto?

Se sim, então eu posto uma nova pergunta hoje mais tarde ...Notas Adicionais

Ocorreu-me que essa pergunta pode ser confusa, a menos que você saiba que os PIDs são PIDs de processos lançados em segundo plano. ie;

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

questionAnswers(2)

yourAnswerToTheQuestion