#!/usr/bin/env python3.1 import select, sys kq = select.kqueue() assert kq.fileno() != -1, "Fatal error: can't initialise kqueue." kq.control([select.kevent(sys.stdin, select.KQ_FILTER_READ, select.KQ_EV_ADD)], 0) eof = False while True: kevs = kq.control(None, 1, None) for kev in kevs: print(kev.filter, kev.data, kev.flags, kev.ident, kev.fflags) if kev.filter == select.KQ_FILTER_READ and kev.data > 0: buffer = sys.stdin.read(kev.data) if len(buffer) == 0: print('eof') eof = True if kev.flags >> 15 == 1 or eof: eof = True kq.control([select.kevent(sys.stdin, select.KQ_FILTER_READ, select.KQ_EV_DELETE)], 0) if len(kevs) == 0 or eof: break