Chương trình sau đây rất đơn giản: nó xuất ra một chấm mỗi nửa giây. Nếu nó nhận được SIGQUIT, nó sẽ xuất ra mười Q s. Nếu mà nó nhận được một SIGTSTP(Ctrl - Z), nó ra mười Z s.Tai ương tín hiệu Python: xử lý SIGQUIT trì hoãn thực hiện nếu SIGQUIT nhận được trong khi thực hiện một trình xử lý tín hiệu khác?
Nếu mà nó nhận được một SIGTSTP khi in Q s, nó sẽ in mười Z s sau khi hoàn thành công việc với mười Q s. Đây là một điều tốt.
Tuy nhiên, nếu nó nhận được một SIGQUIT khi in Z s, nó không in Q s mà đuổi theo. Thay vào đó, nó in chúng ra chỉ sau khi tôi chấm dứt thực hiện thủ công thông qua một KeyboardInterrupt. Tôi muốn các số Q s được in ngay sau Z s.
Điều này xảy ra khi sử dụng Python2.3.
Tôi đang làm gì sai? Muchas gracias.
#!/usr/bin/python
from signal import *
from time import sleep
from sys import stdout
def write(text):
stdout.write(text)
stdout.flush()
def process_quit(signum, frame):
for i in range(10):
write("Q")
sleep(0.5)
def process_tstp(signum, frame):
for i in range(10):
write("Z")
sleep(0.5)
signal(SIGQUIT, process_quit)
signal(SIGTSTP, process_tstp)
while 1:
write('.')
sleep(0.5)