|
- #
- # Test to figure out how to trigger the event.
- #
- # Key points:
- # CLEAR is needed if you want to reset things
- # fp.flush is needed otherwise kernel does not see the write
- #
-
- import select
-
- kq = select.kqueue()
-
- print('begining')
-
- with open('somefile.txt', 'w+') as fp, open('somefile.txt', 'r') as rfp:
- print('fno:', fp.fileno())
- print('rfno:', rfp.fileno())
-
- kevent = select.kevent(rfp, select.KQ_FILTER_VNODE, flags=select.KQ_EV_ADD|select.KQ_EV_ENABLE|select.KQ_EV_CLEAR|0x40, fflags=select.KQ_NOTE_EXTEND)
-
- r = kq.control([ kevent ], 1, 0)
- print(repr(r))
-
- fp.write('foo!')
- fp.flush()
-
- r = kq.control([], 1, 0)
-
- print('r:', repr(r))
-
- print('rfp.tell:', rfp.tell())
- print('rfp.read:', repr(rfp.read()))
-
- r = kq.control([], 1, 0)
-
- print(repr(r))
-
- fp.write('foo!')
- fp.flush()
-
- r = kq.control([], 1, 0)
-
- print(repr(r))
-
- print('fp.tell:', fp.tell())
|