1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#!/usr/local/bin/python -u
""" Simple Forking Alarm
Sample Application for DateTime types and CommandLine. Only works
on OSes which support os.fork().
Author: Marc-Andre Lemburg, mailto:mal@lemburg.com
"""
import time,sys,os
from mx.DateTime import *
from mx.Misc.CommandLine import Application,ArgumentOption
class Alarm(Application):
header = "Simple Forking Alarm"
options = [ArgumentOption('-s',
'set the alarm to now + arg seconds'),
ArgumentOption('-m',
'set the alarm to now + arg minutes'),
ArgumentOption('-a',
'set the alarm to ring at arg (hh:mm)'),
]
version = '0.1'
def main(self):
atime = now() + (self.values['-s'] or
self.values['-m'] * 60 or
self.values['-h'] * 3600) * oneSecond
abs = self.values['-a']
if abs:
atime = strptime(abs,'%H:%M',today(second=0))
if atime < now():
print 'Alarm time has expired...'
return
print 'Alarm will ring at',atime
if not os.fork():
time.sleep((atime - now()).seconds)
alarm()
os._exit(0)
def alarm():
""" Ring alarm
"""
for i in range(10):
sys.stdout.write('\007')
sys.stdout.flush()
time.sleep(0.2)
if __name__ == '__main__':
Alarm()
|