J'essaie de détacher un processus d'un script bash afin que SIGINT ne soit pas transmis au processus lorsque je quitte le script.
J'ai utilisé la disown
commande directement dans le terminal, mais dans bash, cela disown
n'empêche pas le transfert de SIGINT. Le but de ce script est de démarrer openocd puis gdb avec une seule invocation. Étant donné que le script ne se ferme jamais (il exécute gdb), SIGINT est toujours transmis de gdb à openocd, ce qui est un problème car SIGINT est utilisé comme commande d'arrêt dans gdb.
Dans le terminal, cela ressemblerait à ceci:
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
lorsqu'il est invoqué sur le terminal dans cet ordre, le SIGINT n'est pas passé de gdb à openocd. Cependant, si cette même invocation était dans un script bash, le SIGINT est passé.
Toute aide serait grandement appréciée.
ps ce problème est sous OS X mais j'essaie d'utiliser des outils qui sont également portables pour tous les outils Unix.
screen
?
nohup
n'est pas tout à fait la bonne réponse. Vous devez ajouter un pseudocode ou un exemple de code pour montrer plus précisément ce que vous voulez.