diff --git a/libraries/AP_HAL_Linux/ConsoleDevice.cpp b/libraries/AP_HAL_Linux/ConsoleDevice.cpp index 4f2a7cc08b..0c52a6167d 100644 --- a/libraries/AP_HAL_Linux/ConsoleDevice.cpp +++ b/libraries/AP_HAL_Linux/ConsoleDevice.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -31,9 +32,24 @@ bool ConsoleDevice::open() _closed = false; + if (!_set_signal_handlers()) { + close(); + return false; + } + return true; } +bool ConsoleDevice::_set_signal_handlers(void) const +{ + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_handler = SIG_IGN; + + return (sigaction(SIGTTIN, &sa, nullptr) == 0); + +} + ssize_t ConsoleDevice::read(uint8_t *buf, uint16_t n) { if (_closed) { diff --git a/libraries/AP_HAL_Linux/ConsoleDevice.h b/libraries/AP_HAL_Linux/ConsoleDevice.h index d510e6b990..7782434a3c 100644 --- a/libraries/AP_HAL_Linux/ConsoleDevice.h +++ b/libraries/AP_HAL_Linux/ConsoleDevice.h @@ -19,4 +19,6 @@ private: int _rd_fd = -1; int _wr_fd = -1; bool _closed = true; + + bool _set_signal_handlers(void) const; };