Ich versuche, einen Prozess von einem Bash-Skript zu trennen, damit SIGINT nicht an den Prozess weitergeleitet wird, wenn ich das Skript beende.
Ich habe den disown
Befehl im Terminal direkt verwendet, aber in der Bash wird disown
die Weiterleitung von SIGINT nicht gestoppt. Der Zweck dieses Skripts besteht darin, openocd und dann gdb mit einem einzigen Aufruf zu starten. Da das Skript nie beendet wird (es läuft mit gdb), wird SIGINT immer noch von gdb an openocd weitergeleitet, was ein Problem darstellt, da SIGINT als Befehl zum Anhalten in gdb verwendet wird.
Im Terminal würde es ungefähr so aussehen:
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
Wenn SIGINT in dieser Reihenfolge auf dem Terminal aufgerufen wird, wird es nicht von gdb an openocd übergeben. Wenn sich derselbe Aufruf jedoch in einem Bash-Skript befand, wird der SIGINT übergeben.
Jede Hilfe wäre sehr dankbar.
PS: Dieses Problem ist in OS X, aber ich versuche, Tools zu verwenden, die auch auf alle Unix-Tools portierbar sind.
screen
?
nohup
ist nicht ganz die richtige Antwort. Sie sollten einen Pseudocode oder Beispielcode hinzufügen, um genauer zu zeigen, was Sie wollen.