SIGSTOPとSIGTSTPの違いは何ですか?


回答:


153

どちらのシグナルも、最終的にで再開されるプロセスを一時停止するように設計されていSIGCONTます。それらの主な違いは次のとおりです。

  • SIGSTOP信号は、プログラム送信(例えば:kill -STOP pid)しながらSIGTSTP(ためSIG NAL - T erminal 停止)も介して送信することができるttyキーボードのユーザタイピングによってドライバ、通常Control- Z

  • SIGSTOP無視することはできません。SIGTSTPかもしれません。


10
ファクトイド:Linuxプログラマーであれば、SIGTSTPは、Ctrl-Zを使用して、シェルで実行中のプロセスを強制終了せずに中断したときに得られるものです。これにより、通常、シェルは中断されたジョブリストにそれを置きます。
simpleuser 2015年

@Archer私はあなたのコメントを理解するのがよくわかりません。あなたはあなたControl-Zがトリガーしないと信じSIGTSTPているのですか、それともトリガーすべきではないと思いますか?
jlliagre

@jlliagre私はより詳細な調査を行い、あなたが正しいことが判明しました。以前のコメントを削除しました。
アーチャー、

@Archerわかりました、私の推測では、マニュアルページの用語に混乱していました。terminal stopTSTPを意味します。
jlliagre

@jlliagreしたいのですが、システムでは許可されていません。回答が編集された場合にのみ反対投票をキャンセルできると記載されています…
Archer

39

/usr/include/x86_64-linux-gnu/bits/signum.h

#define SIGSTOP     19  /* Stop, unblockable (POSIX).  */
#define SIGTSTP     20  /* Keyboard stop (POSIX).  */

6
Solaris 10では、シグナルはヘッダーファイルで定義されています/usr/include/sys/iso/signal_iso.h
Kent Pawar

2
FreeBSD 11では、次の場所にあります/usr/include/sys/signal.h
Greg Schmit

1

SIGSTOPは、対象プロセスによって無視できません。

その良い例はビデオプレーヤーです。mpv無視することはできますが無視することはできSIGTSTPませんSIGSTOP

ビデオを実行してテストできます:

kill -SIGTSTP $(pidof mpv) そして kill -SIGSTOP $(pidof mpv)

もちろんkill -SIGCONT $(pidof mpv)再生を再開します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.