Parfois, quelque temps après avoir mis en arrière-plan un processus avec bg
en bash, lorsque j'appuie sur Entrée dans le même shell pour réafficher l'invite (juste pour vérifier que je suis toujours en bash quand une sortie du processus en arrière-plan a été affichée), le processus d'arrière-plan semble s'arrêter spontanément.
Si je bg
recommence, le même problème se reproduit.
La seule façon de résoudre ce problème semble être fg
.
Pourquoi cela arrive-t-il?
terminal
io
job-control
background-process
Robin Green
la source
la source
Réponses:
Cela se produit généralement si le processus essaie de lire à partir de son
stdin
flux. Lorsque le processus est en arrière-plan, il reçoit un signal TTIN et est donc figé (même comportement qu'un signal STOP). Il existe également le double signal TTOU lorsqu'un processus d'arrière-plan tente d'écrire sur son terminal.Le mettre au premier plan reprend le processus et lui permet de lire à partir de votre terminal.
Démo:
Une des façons d'éviter cela est d'utiliser
nohup
, mais cela peut avoir des effets étranges si le programme ne gère pas la redirection de son flux d'entrée/dev/null
.la source