A unique instance of Python GUI program
r0g
aioe.org at technicalbloke.com
Thu Sep 18 00:35:36 EDT 2008
akineko wrote:
> Again, thank you for many postings to my question.
> I have reviewed solutions provided.
> Well, I like the named Mutex solution under Windows.
> That is a clean and straight-forward approach to the challenge.
> (I cannot believe that I'm saying good thing about Windows ;-) )
>
> Unfortunately, I'm living in Unix realm ;-)
>
> None of solutions for Unix are appealing to me.
> But they must be "the" solution for the challenge as well-established
> software uses those solutions.
>
> Now, I'm wondering.
> As my program is a GUI (Tkinter) software.
> Is it possible to set a known value to X11 or Tk property through
> Tkinter so that another instance of the program can check if such
> property is set?
>
> Of course, I know this scheme has a flaw. If one instance uses another
> logical display, then such property is probably not shared.
> But for my usage, it is logically possible but not likely.
>
> I checked my Tkinter book and found the following function.
> winfo_interps(displayof=0)
>
> This returns a list of all Tk-based applications currently running on
> the display.
>
> When I tried, I got the following:
>>>> root.winfo_interps()
> ('tk #3', 'tk #2', 'tk')
>
> But I couldn't find a way to set a specific name to the Tcl
> interpreter.
>
> As I'm not an expert of Tcl/Tk and X11, I probably overlooked other
> functions that may do what I need.
>
> Any comments, suggestions on this?
> Maybe this can provide a platform independent way to ensure that only
> single instance is running.
>
> Thank you for your attention.
>
> Best reagrds,
> Aki Niimura
I know it's a hack but couldn't you just open a specific UDP socket and
leave it dangling til your program exits, then if a new instance can't
open that same socket it can gracefully abort? If your program dies the
socket will be freed up again by the OS yes?
Just a thought.
Roger.
More information about the Python-list
mailing list