Chỉ cần tự hỏi về sự khác biệt giữa tín hiệu SIGSTOP và SIGTSTP.
Chỉ cần tự hỏi về sự khác biệt giữa tín hiệu SIGSTOP và SIGTSTP.
Câu trả lời:
Cả hai tín hiệu đều được thiết kế để tạm dừng một quá trình mà cuối cùng sẽ được tiếp tục lại SIGCONT
. Sự khác biệt chính giữa chúng là:
SIGSTOP
là một tín hiệu được gửi theo chương trình (ví dụ: kill -STOP pid
) trong khi SIGTSTP
(đối với sig NAL - t erminal dừng ) cũng có thể được gửi thông qua tty
trình điều khiển bằng một cách gõ người dùng trên một bàn phím, thường Control- Z.
SIGSTOP
không thể bỏ qua. SIGTSTP
có thể là.
Control-Z
nó không kích hoạt SIGTSTP
hay bạn nghĩ nó không nên?
terminal stop
nghĩa là 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
Quá trình nhắm mục tiêu không thể bỏ qua SIGSTOP.
Một ví dụ điển hình là trình phát video mpv
, nó có thể bỏ qua SIGTSTP
nhưng không SIGSTOP
.
Bạn có thể kiểm tra với một video đang chạy:
kill -SIGTSTP $(pidof mpv)
và
kill -SIGSTOP $(pidof mpv)
Tất nhiên kill -SIGCONT $(pidof mpv)
để tiếp tục chơi.