examina o código de saída dos processos iniciados em paralelo a partir de um script

4

Digamos que eu tenha o seguinte script:

#!/usr/bin/env bash
process-1&
process-2&
process-3&

Eu tenho duas perguntas:

  1. como posso verificar no final do meu script que todos os processos saíram com um código de saída de 0?
  2. como meu script pode "aguardar" até que todos os processos iniciados tenham terminado e então concluir echo (talvez informar o usuário sobre os códigos de saída)?
por Marcus Junius Brutus 20.08.2014 / 18:52

1 resposta

1

Você pode usar o bash builtin wait .
Três vezes wait -n , verificando o status de saída a cada vez.

De man bash :

    wait [-n] [n ...]
           Wait  for  each  specified child process and return its termination
           status.  Each n may be a process ID or a job  specification;  if  a
           job  spec is given, all processes in that job's pipeline are waited
           for.  If n is not given, all currently active child  processes  are
           waited  for,  and  the  return status is zero.  If the -n option is
           supplied, wait waits for any job to terminate and returns its  exit
           status.   If  n specifies a non-existent process or job, the return
           status is 127.  Otherwise, the return status is the exit status  of
           the last process or job waited for.
    
por 20.08.2014 / 19:03

Tags