Я пытаюсь отсоединить процесс от сценария bash, чтобы SIGINT не переадресовывался процессу при выходе из сценария.
Я использовал disown
команду в терминале напрямую, однако в bash disown
не останавливает пересылку SIGINT. Цель этого скрипта - запустить openocd, а затем gdb за один вызов. Поскольку скрипт никогда не завершается (он запускает gdb), SIGINT по-прежнему пересылается из gdb в openocd, что является проблемой, поскольку SIGINT используется в качестве команды остановки в gdb.
В терминале это будет выглядеть примерно так:
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
когда вызывается на терминале в этом порядке, SIGINT не передается из gdb в openocd. Однако, если этот же вызов был в скрипте bash, SIGINT передается.
Любая помощь будет принята с благодарностью.
ps эта проблема в OS X, но я пытаюсь использовать инструменты, которые также переносимы на все инструменты Unix.
screen
?
nohup
не совсем правильный ответ. Вы должны добавить псевдокод или пример кода, чтобы показать более точно, что вы хотите.