1

ポーリング ループを開始した後、最初の繰り返しの後に出力されたすべてのメッセージを表示するには、ターミナルで 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
4

1 に答える 1

1

最初の反復の後、pty fd を登録してからポーリングしていませんか? そして、その fd がソケット fd と等しくなることはありません。そのため、pty fd を os.read します。そして、それは今あなたの端末から読んでいませんか?それで、リターンを入力しても「データを印刷」しませんか?

于 2009-09-03T20:52:30.920 に答える