ultimatepp/bazaar/TestSignals/main.cpp
micio b0342fe8d3 updated Signals package
git-svn-id: svn://ultimatepp.org/upp/trunk@588 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-11-01 15:59:09 +00:00

58 lines
1.4 KiB
C++

#include "TestSignals.h"
#include <Signals/Signals.h>
////////////////////////////////////////////////////////////////////////////////////
// handler for SIGHUP signal
void TestSignals::onHup(void)
{
InfoEdit.Set(InfoEdit.Get() + "SIGHUP signal received\n");
} // END TestSignals::onHup()
////////////////////////////////////////////////////////////////////////////////////
// handler for SIGQUIT signal
void TestSignals::onQuit(void)
{
InfoEdit.Set(InfoEdit.Get() + "SIGQUIT signal received\n");
} // END TestSignals::onQuit
////////////////////////////////////////////////////////////////////////////////////
TestSignals::TestSignals()
{
// gets current process id to show usage
int pid = getpid();
UsageLabel = "Usage : open a terminal and do \"kill -HUP " + AsString(pid) +"\" or \"kill -QUIT " + AsString(pid) + "\"";
// clear info box
InfoEdit.Clear();
// sets up signal handlers
Signals().Handle(SIGHUP, THISBACK(onHup));
Signals().Handle(SIGQUIT, THISBACK(onQuit));
// sets up layout
CtrlLayout(*this, "Posix signal handling demo");
}
GUI_APP_MAIN
{
// first checks if another app instance is running
if(Signals().IsOtherInstanceRunning())
{
// sends to other instance a SIGHUP signal
Signals().Send(SIGHUP);
// prompt and exit
PromptOK("Another app instance is already running!!!");
return;
}
// ok, no other instance, signals this one
Signals().StoreInstance();
// runs the application
TestSignals().Run();
}