static inline void n_tty_receive_char(struct tty_struct *tty, unsigned char c)
n_tty.c
signal = SIGTSTP;
if (c == SUSP_CHAR(tty)) {
send_signal:
isig(signal, tty, 0);
return;
}
当有这个按键组合的时候,内核向终端的前端进程发送SIGTSTP命令,这个命令和调试器使用的SITSTP不同,内核的注释是这么说明的
#define SIGSTOP 23 /* Stop, unblockable (POSIX). */
#define SIGTSTP 24 /* Keyboard stop (POSIX). */
对于这个信号,系统会将接受该信号的进程设置为STP状态,并且买一送一,还会通知父进程子进程的状态变化,不过父进程接受到的是SIGCHILD信号,在附带信息中会提示说明受到的信号是SIGTSTP。这个也是bash能够感受到自己管理的job有停止的底层基础。
阅读(1870) | 评论(0) | 转发(0) |