終了画面でプログラム実行中のGDBの終了

終了画面でプログラム実行中のGDBの終了

私はプログラムを実行するためにscreenとGDBを使用しています。
プログラムを実行するには:

screen -dmS adapter "./run-adapter.sh"

存在するrun-adapter.sh

gdb -ex "handle SIGPIPE nostop noprint pass" -ex run -args ./Adapter adapter.conf

問題は、画面を介してプログラムを終了しようとするときです。

screen -X -S adapter quit

画面は見事に終了しますが、プログラムとそのGDBはまだそこにあります(ps auxコマンドで確認)。画面が終了したときに画面を終了する方法はありますか?

編集する:MarkPlotnickが要求したように私の画面はScreen version 4.00.03d (FAU) 23-Oct-06であり、GDBはGNU gdb (GDB) 7.7
出力grep Sig /proc/$(pgrep Adapter)/status

SigPnd: 0000000000040000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 0000000180000620

ベストアンサー1

MarkPlotnickのコメントで提案されているように-ex quitgdbコマンドを追加しましたが、OpenSUSE 13.1で動作します。フル実行コマンドは次のとおりです。

gdb -ex "handle SIGPIPE nostop noprint pass" -ex run -ex quit -args ./Adapter adapter.conf

画面を終了してgdbを自動的に終了させるには、次のようにします。

screen -X -S adapter quit

残念ながら、オペレーティングシステムをOpenSUSE 42.2にアップグレードしたときに同じコマンドが機能しませんでした。いくつかの調査が完了したら、次の方法で終了できます。

screen -X -S adapter stuff "^C" screen -X -S adapter quit

このstuffコマンドは、プロセスを終了するためにCtrl-C信号(SIGINT)を送信しますadapter。その後、を呼び出して正常に終了できますscreen ... quit

PS:-ex quit.gdbコマンドを呼び出すと、このオプションはもう必要ありませんscreen ... stuff

おすすめ記事