ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Ensure at the time of closing the application this entry is set to false.
This method fails in the event that the application crashes. All further instances (even a valid one) will think another instance is running.
On the other hand, if you keep the file handle open after creat (something I forgot), no one else will be able to create the file, but if you crash, the O/S should clean up after you.
This doesn't work so well on Windows, because Windows is horrible about trying to clean up after crashed applications.
This method fails in the event that the application crashes. All further instances (even a valid one) will think another instance is running.
On the other hand, if you keep the file handle open after creat (something I forgot), no one else will be able to create the file, but if you crash, the O/S should clean up after you.
This doesn't work so well on Windows, because Windows is horrible about trying to clean up after crashed applications.
You are spot on. The problem would arise if the program crashes or if the computer shuts down improperly (in case of power failure).
Well, I have found another workaround. Using sockets is an option. So when the jar (java app) is started, bind it to an arbitrary, high port (high port is to ensure that the port is free and available to be used). When the application exits, close the port. Whenever the application is run, bind it to the same port. So this ensures another instance is not open when one is already running.
Advantage is that it is much easier when compared to the file opening/locking method.
Disadvantage is that the program won't run if the port is already in use. So use a high end port (for ex, 50000 or higher) as the chances of these ports being used are less.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.