program is running. To do it, you should create an object of this class. As
long as this object is alive, calls to
\helpref{IsAnotherRunning()}{wxsingleinstancecheckerisanotherrunning} from
-other processes will return {\tt TRUE}.
+other processes will return {\tt true}.
As the object should have the life span as big as possible, it makes sense to
create it either as a global or in \helpref{wxApp::OnInit}{wxapponinit}. For
{
wxLogError(_("Another program instance is already running, aborting."));
- return FALSE;
+ delete m_checker; // OnExit() won't be called if we return false
+ m_checker = NULL;
+
+ return false;
}
... more initializations ...
- return TRUE;
+ return true;
}
int MyApp::OnExit()
<wx/snglinst.h>
+\wxheading{Library}
+
+\helpref{wxBase}{librarieslist}
+
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxSingleInstanceChecker::wxSingleInstanceChecker}\label{wxsingleinstancecheckerctor}
\wxheading{Return value}
-Returns {\tt FALSE} if initialization failed, it doesn't mean that another
+Returns {\tt false} if initialization failed, it doesn't mean that another
instance is running - use
\helpref{IsAnotherRunning()}{wxsingleinstancecheckerisanotherrunning} to check
for it.
+\wxheading{Note}
+
+One of possible reasons while Create may fail on Unix is that the lock file
+used for checking already exists but was not created by the user.
+Therefore applications shouldn't treat failure of this function as fatal
+condition, because doing so would open them to the possibility of a Denial of
+Service attack. Instead, they should alert the user about the problem and
+offer to continue execution without checking if another instance is running.
+
\membersection{wxSingleInstanceChecker::IsAnotherRunning}\label{wxsingleinstancecheckerisanotherrunning}
\constfunc{bool}{IsAnotherRunning}{\void}
-Returns {\tt TRUE} if another copy of this program is already running, {\tt
-FALSE} otherwise.
+Returns {\tt true} if another copy of this program is already running, {\tt
+false} otherwise.
\membersection{wxSingleInstanceChecker::\destruct{wxSingleInstanceChecker}}\label{wxsingleinstancecheckerdtor}