diff options
Diffstat (limited to 'doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc')
-rw-r--r-- | doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc b/doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc deleted file mode 100644 index 8abcba69a..000000000 --- a/doc/codesnippets/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc +++ /dev/null @@ -1,110 +0,0 @@ -//! [0] -class MyDaemon : public QObject -{ - Q_OBJECT - - public: - MyDaemon(QObject *parent = 0, const char *name = 0); - ~MyDaemon(); - - // Unix signal handlers. - static void hupSignalHandler(int unused); - static void termSignalHandler(int unused); - - public slots: - // Qt signal handlers. - void handleSigHup(); - void handleSigTerm(); - - private: - static int sighupFd[2]; - static int sigtermFd[2]; - - QSocketNotifier *snHup; - QSocketNotifier *snTerm; -}; -//! [0] - - -//! [1] -MyDaemon::MyDaemon(QObject *parent, const char *name) - : QObject(parent,name) -{ - if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sighupFd)) - qFatal("Couldn't create HUP socketpair"); - - if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sigtermFd)) - qFatal("Couldn't create TERM socketpair"); - snHup = new QSocketNotifier(sighupFd[1], QSocketNotifier::Read, this); - connect(snHup, SIGNAL(activated(int)), this, SLOT(handleSigHup())); - snTerm = new QSocketNotifier(sigtermFd[1], QSocketNotifier::Read, this); - connect(snTerm, SIGNAL(activated(int)), this, SLOT(handleSigTerm())); - - ... -} -//! [1] - - -//! [2] -static int setup_unix_signal_handlers() -{ - struct sigaction hup, term; - - hup.sa_handler = MyDaemon::hupSignalHandler; - sigemptyset(&hup.sa_mask); - hup.sa_flags = 0; - hup.sa_flags |= SA_RESTART; - - if (sigaction(SIGHUP, &hup, 0) > 0) - return 1; - - term.sa_handler = MyDaemon::termSignalHandler; - sigemptyset(&term.sa_mask); - term.sa_flags |= SA_RESTART; - - if (sigaction(SIGTERM, &term, 0) > 0) - return 2; - - return 0; -} -//! [2] - - -//! [3] -void MyDaemon::hupSignalHandler(int) -{ - char a = 1; - ::write(sighupFd[0], &a, sizeof(a)); -} - -void MyDaemon::termSignalHandler(int) -{ - char a = 1; - ::write(sigtermFd[0], &a, sizeof(a)); -} -//! [3] - - -//! [4] -void MyDaemon::handleSigTerm() -{ - snTerm->setEnabled(false); - char tmp; - ::read(sigtermFd[1], &tmp, sizeof(tmp)); - - // do Qt stuff - - snTerm->setEnabled(true); -} - -void MyDaemon::handleSigHup() -{ - snHup->setEnabled(false); - char tmp; - ::read(sighupFd[1], &tmp, sizeof(tmp)); - - // do Qt stuff - - snHup->setEnabled(true); -} -//! [4] |