<Anterior | Conteúdo | Próxima>
esperar
Vamos demonstrar o esperar comando primeiro. Para fazer isso, precisaremos de dois scripts, um script pai:
#! / Bin / bash
# async-parent: demonstração de execução assíncrona (pai) echo "Pai: iniciando ..."
echo "Pai: iniciando script filho ..." async-child &
pid = $!
echo "Pai: filho (PID = $ pid) lançado."
echo "Pai: continuando ..." sono 2
echo "Pai: pausando para esperar a criança terminar ..." wait $ pid
echo "Pai: filho terminou. Continuando ..." echo "Pai: pai terminou. Saindo."
#! / Bin / bash
# async-parent: demonstração de execução assíncrona (pai) echo "Pai: iniciando ..."
echo "Pai: iniciando script filho ..." async-child &
pid = $!
echo "Pai: filho (PID = $ pid) lançado."
echo "Pai: continuando ..." sono 2
echo "Pai: pausando para esperar a criança terminar ..." wait $ pid
echo "Pai: filho terminou. Continuando ..." echo "Pai: pai terminou. Saindo."
e um script filho:
#! / Bin / bash
# async-child: demonstração de execução assíncrona (filho) echo "Criança: filho está executando ..."
dormir 5
echo "Criança: a criança acabou. Saindo."
#! / Bin / bash
# async-child: demonstração de execução assíncrona (filho) echo "Criança: filho está executando ..."
dormir 5
echo "Criança: a criança acabou. Saindo."
Neste exemplo, vemos que o script filho é muito simples. A ação real está sendo executada pelos pais. No script pai, o script filho é iniciado e colocado em segundo plano. O ID do processo do script filho é registrado atribuindo o pid variável com o valor do $! parâmetro shell, que sempre conterá o ID do processo do último trabalho colocado em segundo plano.
O script pai continua e, em seguida, executa um esperar comando com o PID do processo filho. Isso faz com que o script pai pause até que o script filho seja encerrado, ponto em que o script pai é concluído.
Quando executados, os scripts pai e filho produzem a seguinte saída:
[me @ linuxbox ~] $ pai assíncrono
Pai: começando ...
[me @ linuxbox ~] $ pai assíncrono
Pai: começando ...
Execução Assíncrona
Pai: iniciando script filho ... Pai: filho (PID = 6741) iniciado. Pai: continuando ...
Criança: criança está correndo ...
Pai: fazendo uma pausa para esperar que a criança termine ... Criança: a criança acabou. Saindo.
Pai: filho acabou. Continuando ... Pai: pai está feito. Saindo.
Pai: iniciando script filho ... Pai: filho (PID = 6741) iniciado. Pai: continuando ...
Criança: criança está correndo ...
Pai: fazendo uma pausa para esperar que a criança termine ... Criança: a criança acabou. Saindo.
Pai: filho acabou. Continuando ... Pai: pai está feito. Saindo.