[英]Problem with polling sockets in python
開始輪詢循環后,第一次迭代后打印的所有消息都要求我在終端中按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
第一次迭代之后,您是否沒有注冊pty fd,然后進行輪詢? 而且它的fd永遠不會等於套接字fd,因此您將讀入pty fd。 現在不是從您的終端讀取信息嗎? 因此,不會鍵入返回值來導致其“打印數據”嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.