> Desktop to the executable). The problem is, only *one* person at a time > should run the program.
> Now here's my solution: > 1. Create a program let's call it 'myProg' that spawns 'otherProg'. > 2. 'myProg' will utilize a config file. > 3. When 'myProg' is started it looks in the config file to see if > 'otherProg' is running. The usual way of doing this is simply to create an empty file when the program starts and delete it when the program closes In python: ############## # File : exRun.py ''' usage python exRun.py foo.exe prevents more than one copy of the guarded program running ''' import os, sys if len(sys.argv) != 2: print "Usage: python exRun.py <application name>" sys.exit() prog = sys.argv[1] fname = prog+'running.dat' try: open(fname,'w').close() # create an empty file. os.system(prog) os.remove(fname) except IOError: print prog, 'is already running, try again later' sys.exit() ################ > 4. If 'otherProg' is not running, start it and write to the config file > that 'otherProg' is running (also write who is running it). > 5. 'myProg' continues to run on the user's computer, continuously > checking the PID (of 'otherProg') to see if the process is still alive. > 6. When we don't find the PID anymore, write to the config file that > 'otherProg' isn't running. > 7. Shutdown 'myProg'. The design above will work too of course but uses more CPU cycles and may be slightly harder to fix if the machine crashes while the app is running sincve the open config file could be corrupted. > Now in step #3 above - if 'myProg' reads the config file and finds that > the 'otherProg' is currently running, the user is warned that 'The > program is currently in use by <insert username from config file>!' And > 'otherProg' is not started. The current user name can be obtained from getpass.getuser() if you need it. > Couple of other things..... > 1. I'm taking 'myProg' and creating a single-file executable using py2exe. Thats fair enough > 2. 'myProg.exe' and the config file live on the network in the same > directory as 'otherProg'. There's no real need for that. My version usually lives in a common area since it can be used to control multiple apps, and it usually writes its file into a semi-hidden folder to avoid unscrupulous users deleting the file!. > 3. User's have a shortcut on the Desktop to 'myProg.exe' instead of > 'otherProg'. Yes, or in my case several shortcuts with the app names hard coded in the shortcut. > BTW, I've never stopped to consider if there was a simple 'Windows > networking / permissions' type solution to the problem. I just went > straight to Python :-) You can do it all using DOS style BAT files if you use my approach. > Here's my code. I'd appreciate any critiques! Its longer than mine :-) Alan G Author of the learn to program web tutor http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor