スクリプトを終了するときにSIGINTがプロセスに転送されないように、bashスクリプトからプロセスをデタッチしようとしています。
disown
ターミナルでコマンドを直接使用しましたが、bashではdisown
SIGINTの転送を停止しません。このスクリプトの目的は、openocdを起動し、1回の呼び出しでgdbを起動することです。スクリプトは終了しない(gdbを実行している)ので、SIGINTはgdbからopenocdに転送されますが、これはSIGINTがgdbのhaltコマンドとして使用されるため問題です。
ターミナルでは、次のようになります。
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
端末でこの順序で呼び出された場合、SIGINTはgdbからopenocdに渡されません。ただし、これと同じ呼び出しがbashスクリプトで行われた場合、SIGINTが渡されます。
どんな助けも大歓迎です。
psこの問題はOS Xにありますが、すべてのUnixツールにも移植可能なツールを使用しようとしています。
screen
ですか?
nohup
正しい答えではありません。疑似コードまたはサンプルコードを追加して、必要なものをより正確に表示する必要があります。