diff options
Diffstat (limited to '')
| -rw-r--r-- | src/server/main.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/server/main.cpp b/src/server/main.cpp index 75939e0..c20cde9 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -1,3 +1,4 @@ +#include <csignal> #include <cstdint> #include <iostream> #include <stdexcept> @@ -5,6 +6,21 @@ #include "shared_memory_server.h" +Server<int, int> shm; + +/** + * @brief Shuts the server down, when pressing <Ctrl+C>. + * + * @param signal Specifies the signal, which was caught. + */ +void signal_handler(int signal) { + if (signal == SIGINT) { + std::cout << "Server shutting down" << '\n'; + shm.terminate_server(); + exit(0); + } +} + int main(int argc, char* argv[]) { if (argc != 2) { @@ -20,7 +36,9 @@ int main(int argc, char* argv[]) return 1; } - Server<int, int> shm(size); + shm.initialize_hashtable(size); + + std::signal(SIGINT, signal_handler); shm.process_requests(); |