0

Exit if already running (pid file)

This commit is contained in:
Robin
2013-11-26 20:36:53 +01:00
parent c56e12d94d
commit 5bc3f13b4f
2 changed files with 20 additions and 3 deletions

View File

@@ -141,8 +141,14 @@ def main():
if options.pid:
if os.path.exists(options.pid):
try:
with open(options.pid, 'r') as fpid:
pid = int(fpid.read())
if util.pid_exists(pid):
print("Already running (pid exists) - exiting..")
return 0
except IOError, ValueError:
pass
with open(options.pid,"w") as f:
f.write(str(os.getpid()))
# if --check-terrain was specified, but we have NO config file, then we cannot

View File

@@ -24,7 +24,7 @@ import platform
from string import hexdigits
from subprocess import Popen, PIPE
from itertools import cycle, islice, product
import errno
def get_program_path():
if hasattr(sys, "frozen") or imp.is_frozen("__main__"):
return os.path.dirname(sys.executable)
@@ -391,3 +391,14 @@ try:
OrderedDict = collections.OrderedDict
except (ImportError, AttributeError):
pass
def pid_exists(pid): # http://stackoverflow.com/a/6940314/1318435
"""Check whether pid exists in the current process table."""
if pid < 0:
return False
try:
os.kill(pid, 0)
except OSError, e:
return e.errno != errno.ESRCH
else:
return True