어떤 이유에서 siginterrupt()는 수신 된 첫 번째 신호의 동작을 설정하는 것처럼 보입니다.siginterrupt()는 첫 번째 신호에서만 작동합니까? (Python)
이 예제 프로그램에서 첫 번째 SIGQUIT는 아무 것도하지 않지만 두 번째 sigquit은 "SIGQUIT Handler"를 인쇄하고 s.accept()는 중단 된 시스템 호출 예외를 발생시킵니다.
from signal import *
from socket import *
import sys
def sigquitHandler(signum, frame):
print("SIGQUIT Handler")
s = socket()
s.bind(("0.0.0.0", int(sys.argv[1])))
s.listen(5)
signal(SIGQUIT, sigquitHandler)
siginterrupt(SIGQUIT, False)
client, addr = s.accept() # Or any syscall that blocks
client.close()
s.close()
여기 오해는 무엇입니까?
편집 : 여기이 프로그램에서 SIGQUIT이 select()를 인터럽트하는 다른 것을 알아 냈습니다. 그게 일어날 거니?
from signal import *
import select
import sys
def sigquitHandler(signum, frame):
print("SIGQUIT Handler")
signal(SIGQUIT, sigquitHandler)
siginterrupt(SIGQUIT, False)
select.select([sys.stdin], [], [])
내가 siginterrupt' 정말 전용 데이터 (예 : 개방과 같은 원시, 읽기 또는 쓰기)의 전송을 포함하는 시스템 호출에 적용'생각을 참조하십시오. 'select'와 같은 시스템 호출에는 적용되지 않는다고 생각합니다. – mhawke
아, 그래. 다시 한 번 감사드립니다 :) –