1
这是处理套接字中数据的follow-up question。但是,我无法捕获“stdin closed”事件。这是我现在有:如何监听龙卷风循环中关闭的stdin事件?
import sys
import tornado
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler
class MainHandler(RequestHandler):
def get(self):
self.finish("foo")
application = Application([ (r"/", MainHandler), ])
@tornado.gen.coroutine
def close_callback(*args, **kwargs):
print args, kwargs
if __name__ == "__main__":
application.listen(8888)
stdin = tornado.iostream.PipeIOStream(sys.stdin.fileno())
stdin.set_close_callback(close_callback)
IOLoop.instance().start()
和测试:
$ ./tornado_sockets.py # expect to close stdin
<C-d> # nothing happens
另一项测试:
$ echo expect_stdin_to_be_closed | ./tornado_sockets.py
# nothing happens
我如何可以监听标准输入的结束?