Files
MapLibreParticleLab/scripts/flock.py
2015-02-04 18:07:32 +01:00

30 lines
833 B
Python
Executable File

#!/usr/bin/env python
import fcntl, os, subprocess, sys, errno
# from http://stackoverflow.com/a/600612
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else: raise
def flock(lockfile, cmd_list, verbose = False):
mkdir_p(os.path.dirname(lockfile))
fd = os.open(lockfile, os.O_RDONLY | os.O_NOCTTY | os.O_CREAT, 0o666)
fcntl.flock(fd, fcntl.LOCK_EX)
if verbose:
print(' '.join(cmd_list))
return subprocess.call(cmd_list)
if '__main__' == __name__:
try:
if sys.argv[1] == '-v':
sys.exit(flock(sys.argv[2], sys.argv[3:], True))
else:
sys.exit(flock(sys.argv[1], sys.argv[2:]))
except KeyboardInterrupt:
sys.exit(1)