私はプログラムを実行するために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 quit
gdbコマンドを追加しましたが、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
。