1
나는 다음과 같은 프로그램이 있습니다파이썬에서 다음과 같은 신호 처리 동작을 설명 할 수 있습니까?
import socket
import sys
import threading
import signal
class serve(threading.Thread):
def __init__(self):
super(serve, self).__init__()
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.host = ''
self.port = int(sys.argv[1])
def run(self):
self.s.bind((self.host, self.port))
self.s.listen(1)
conn, addr = self.s.accept()
# Call blocks in the following recv
data = conn.recv(1000000)
conn.close()
self.s.close()
def handler(signum, frame):
print "I am the handler: "
signal.signal(signal.SIGHUP, handler)
background = serve()
background.start()
background.join()
이 연결하지만 데이터를 보내지 않는 클라이언트 프로그램이 있습니다. 문제는 SIGHUP이 보내지고 "중단 된 시스템 호출"예외가 발생하는 경우입니다. 왜 그런가? 그것은 파이썬 2.6+와 FreeBSD에서 일어나고 있습니다. 나는 그것이 http://bugs.python.org/issue1975와 관련이 있다고 생각합니다.