J'ai function
que wait
s pour la donnée pids
:Attribution d'une variable l'état de sortie de commande `wait` d'une fonction
waitpid() {
wait "[email protected]";
}
je peux wait
pour job
s ainsi:
sleep 5 &
spid=$!
waitpid $spid
echo $?
0
Cela fonctionne. Cependant, je veux saisir l'output
du function
dans une variable:
sleep 5 &
spid=$!
spid_status=$(waitpid $spid)
echo $?
255
[1]+ Done sleep 5
Cela ne fonctionne pas, comme $()
commence une nouvelle subshell
et wait
n'est pas en mesure d'attendre des coquillages qui ne sont pas des enfants de son posséder.
Y at-il une solution de contournement à cela? Je voudrais avoir une fonction qui wait
s pour subshell
s à la fin et return
est tout l'état de sortie comme ceci:
waitpids() {
local pids_status
for pid in "[email protected]"; do
wait "$pid";
pids_status+=($?)
done
echo "$pids_status[@]}"
}
Pouvez-vous expliquer ce que fait la première ligne? Le fichier temporaire "$ stdout" sera-t-il annulé à la fin du travail? – kaligne
Il sera supprimé. C'est utile si tout le traitement de ce fichier se passe dans le même script, et vous ne voulez pas manquer d'espace disque. – l0b0