폴링 루프를 시작한 후 첫 번째 반복 이후에 인쇄 된 모든 메시지는 터미널에서 Enter 키를 눌러 표시되도록합니다.파이썬 소켓 폴링 문제
#!/usr/bin/python
import socket, select, os, pty, sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 5007))
s.listen(5)
mypoll = select.poll()
mypoll.register(s.fileno())
while True:
print "poll time"
subr = mypoll.poll()
for x in subr[0]:
if x == s.fileno():
conn, addr = s.accept()
pid, fd = pty.fork()
if pid != 0:
mypoll.register(fd)
print "done. go back to poll now"
else:
print "forked"
#handles new connection
else:
data = os.read(x,1024)
print data
이 프로그램은 아마도 지금까지 여러 달 동안 본 흐름을 따라 가기가 힘들었을 것입니다. 여기에 기본적인 오류를 수정해야합니다. 부모와 동시에 연결을 재개하는 자녀를 포크로 잡는다면 - 나빠질 것입니다. 설문 조사 루프를 사용하여 자녀의 제어 터미널을 등록하고 있지만 허용 된 연결을 등록하지 않았습니까? – leeeroy
새로운 포크를 처리해야하는 곳에 무한 루프를 넣는 것을 잊어 버렸습니다. –