hello,
comment remonter mon code de sortie au shell parent ?
excellente formulation! du coup la lecture d'un document expliquant le fonctionnement des processus unix te donnera la réponse: tu ne peux simplement pas. Il faut donc utiliser un socket unix ou internet, un fichier ou n'importe quel autre mecanisme qui permettent aux process de s'échanger de l'info.
Si oui, je cherche un moyen de récupérer le code de sortie d'une commande que je fais tourner en arrière plan.
comment peux-tu avoir un code de retour d'un truc qui tourne a moins de lire dans le futur ?
J'ai essayé $commande && exit $? &
oula ... reprennons: commande; exit $? et commande; font la meme chose (parceque le shell renvoie la valeur de la derniere expression evaluée (soit $?)). idem pour les fonctions foo () { commande; return $? } et foo () { commande } mais donc... que renvoie une expression qui passe une commande en bg ? foo () { return 5 } foo perl -E'sleep 1; exit 10'& echo $? # 0 donc $? veut juste dire que & a marché foo wait echo $? # 0 ... donc $? veut dire que wait a bien fonctionné dans zsh tu as le $pipe_status mais j'ai jamais utilisé. donc le plus simple a mon avis est de passer par des fichiers pstatus=$( mktemp -d ~/process-status-$(date +%F_%X_%s_XXXX )) { montruc --avec --plein de parametres <<< $? > $pstatus/montruc } & du coup tu peux voir si le process est fini dans ton script test -f $pstatus/montruc && echo "job done" et comme c'est dans des fichiers, tu peux facilement surveille l'état d'avancement des jobs meme apres avoir quitté ton script. cordialement, -- Marc Chantreux (eiro on github and freenode) http://eiro.github.com/ http://eiro.github.com/atom.xml "Don't believe everything you read on the Internet" -- Abraham Lincoln