Фон
Я пытаюсь создать пример приложения REST API для Rasbian, работающего на Raspberry 3. Я использовал cpprestsdk
.
Образец содержит следующий заголовочный файл:
#include <condition_variable>
#include <mutex>
#include <iostream>
static std::condition_variable _condition;
static std::mutex _mutex;
namespace cfx {
class InterruptHandler {
public:
static void hookSIGINT() {
signal(SIGINT, handleUserInterrupt);
}
static void handleUserInterrupt(int signal){
if (signal == SIGINT) {
std::cout << "SIGINT trapped ..." << '\n';
_condition.notify_one();
}
}
static void waitForUserInterrupt() {
std::unique_lock<std::mutex> lock { _mutex };
_condition.wait(lock);
std::cout << "user has signaled to interrup program..." << '\n';
lock.unlock();
}
};
}
Проблема
При компиляции в MacOS проблем не возникает.
Однако при компиляции в rasbian я получаю ошибку error: 'SIGINT' was not declared in this scope
.
Ясно, что определение SIGINT
- #define SIGINT 2
или подобное - недоступно при компиляции в rasbian.
Вопрос
Почему я получаю эту ошибку на rasbian, а не на macOS?Это потому, что компилятор не может найти signal.h
?
Я убедился, что include_directories
в CMakeLists.txt содержит обязательные пути включения.
UPDATE
Ошибка устранена, когда я вручную добавил #include <csignal>
.