import os import signal import time ITIMER = 0.1 # seconds SIGNAMES = ('SIGINT', 'SIGALRM', 'SIGWINCH', 'SIGTERM', 'SIGCHLD') got_signals = 0 def signal_handler(*args): global got_signals got_signals += 1 for signame in SIGNAMES: if not hasattr(signal, signame): continue signum = getattr(signal, signame) print("Register %s" % signame) signal.signal(signum, signal_handler) signal.siginterrupt(signum, True) fd = os.open('.', os.O_RDONLY | os.O_DIRECTORY) input("ready: disconnect the network cable and press enter to continue") if hasattr(signal, 'SIGALRM') and ITIMER: print("Send SIGALRM every %.1f ms" % (ITIMER * 1e3)) signal.setitimer(signal.ITIMER_REAL, 1.0, ITIMER) print("wait a few signals") while got_signals < 5: time.sleep(0.1) print("fstat...") t0 = time.monotonic() st = os.fstat(fd) dt = time.monotonic() - t0 print("fstat... %.1f ms" % (dt*1e3)) print(st) os.close(fd) print("Got %s signals" % got_signals)