123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef foodaemonsignalhfoo
- #define foodaemonsignalhfoo
- /***
- This file is part of libdaemon.
- Copyright 2003-2008 Lennart Poettering
- libdaemon is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation, either version 2.1 of the
- License, or (at your option) any later version.
- libdaemon is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with libdaemon. If not, see
- <http://www.gnu.org/licenses/>.
- ***/
- #ifdef __cplusplus
- extern "C" {
- #endif
- /** \file
- *
- * Contains the API for serializing signals to a pipe for
- * usage with select() or poll().
- *
- * You should register all signals you
- * wish to handle with select() in your main loop with
- * daemon_signal_init() or daemon_signal_install(). After that you
- * should sleep on the file descriptor returned by daemon_signal_fd()
- * and get the next signal recieved with daemon_signal_next(). You
- * should call daemon_signal_done() before exiting.
- */
- /** Installs signal handlers for the specified signals
- * @param s, ... The signals to install handlers for. The list should be terminated by 0
- * @return zero on success, nonzero on failure
- */
- int daemon_signal_init(int s, ...);
- /** Install a signal handler for the specified signal
- * @param s The signalto install handler for
- * @return zero onsuccess,nonzero on failure
- */
- int daemon_signal_install(int s);
- /** Free resources of signal handling, should be called before daemon exit
- */
- void daemon_signal_done(void);
- /** Return the next signal recieved. This function will not
- * block. Instead it returns 0 if no signal is queued.
- * @return The next queued signal if one is queued, zero if none is
- * queued, negative on failure.
- */
- int daemon_signal_next(void);
- /** Return the file descriptor the daemon should select() on for
- * reading. Whenever the descriptor is ready you should call
- * daemon_signal_next() to get the next signal queued.
- * @return The file descriptor or negative on failure
- */
- int daemon_signal_fd(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|