ポーリングループを開始した後、最初の反復後に表示されるすべてのメッセージは、ターミナルでEnterキーを押して表示する必要があります。Pythonでポーリングソケットの問題
#!/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
新しいフォークを処理する場所を無限ループにするのを忘れていました。しかし、彼らはデータを持っていた後にのみ、 –