【发布时间】:2012-08-06 21:05:49
【问题描述】:
只是想知道 SIGSTOP 和 SIGTSTP 信号之间的区别。
【问题讨论】:
标签: unix signals signal-handling
只是想知道 SIGSTOP 和 SIGTSTP 信号之间的区别。
【问题讨论】:
标签: unix signals signal-handling
这两个信号都旨在暂停一个最终将通过SIGCONT 恢复的进程。它们之间的主要区别是:
SIGSTOP 是以编程方式发送的信号(例如:kill -STOP pid),而SIGTSTP(对于 signal - t终端stop)也可以通过tty 驱动程序由用户在键盘上键入,通常是Control-Z。
SIGSTOP 不能忽略。 SIGTSTP 可能是。
【讨论】:
Control-Z 不会触发SIGTSTP 还是你认为它不应该触发?
terminal stop 表示 TSTP。
/usr/include/x86_64-linux-gnu/bits/signum.h
#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
#define SIGTSTP 20 /* Keyboard stop (POSIX). */
【讨论】:
/usr/include/sys/iso/signal_iso.h
/usr/include/sys/signal.h
SIGSTOP 不能被目标进程忽略。
一个很好的例子是视频播放器mpv,它可以忽略SIGTSTP,但不能忽略SIGSTOP。
您可以通过正在运行的视频进行测试:
kill -SIGTSTP $(pidof mpv)
和
kill -SIGSTOP $(pidof mpv)
当然kill -SIGCONT $(pidof mpv) 继续播放。
【讨论】: