From 05e32593ec570670b18ed92c11f5b724e7e8be13 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 18 Mar 2008 22:25:17 +0000 Subject: [PATCH] Implement unique application instance checks --- src/libprs500/__init__.py | 13 +++++++++++-- src/libprs500/gui2/main.py | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libprs500/__init__.py b/src/libprs500/__init__.py index f38ac46594..5662a29002 100644 --- a/src/libprs500/__init__.py +++ b/src/libprs500/__init__.py @@ -411,7 +411,16 @@ def relpath(target, base=os.curdir): rel_list = [os.pardir] * (len(base_list)-i) + target_list[i:] return os.path.join(*rel_list) -_lock_file = None +def _clean_lock_file(file): + try: + file.close() + except: + pass + try: + os.remove(file.name) + except: + pass + def singleinstance(name): ''' Return True if no other instance of the application identified by name is running, @@ -435,7 +444,7 @@ def singleinstance(name): try: f = open(path, 'w') fcntl.lockf(f.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB) - _lock_file = f + atexit.register(_clean_lock_file, f) return True except IOError: return False diff --git a/src/libprs500/gui2/main.py b/src/libprs500/gui2/main.py index 36d0090f3a..22e4498380 100644 --- a/src/libprs500/gui2/main.py +++ b/src/libprs500/gui2/main.py @@ -1016,7 +1016,7 @@ def main(args=sys.argv): app = QApplication(args) QCoreApplication.setOrganizationName(ORG_NAME) QCoreApplication.setApplicationName(APP_UID) - if not singleinstance('main GUI'): + if not singleinstance('mainGUI'): QMessageBox.critical(None, 'Cannot Start '+__appname__, '

%s is already running.

'%__appname__) return 1