[英]Boost thread and signal handling
我想知道如何使用boost線程捕獲信號。 我知道如何使用pthreads做到這一點,但無法在boost中找到解決方案。
我想在線程中捕獲像sigsegv等錯誤異常信號,以便整個程序在一個線程出現此錯誤時不會崩潰。
我總是可以直接使用底層的pthread庫來做這個,但是想知道在boost::thread
是否有一種可移植的方法。
收到SEGV
信號后,您的進程無法可靠地恢復執行。 如果您的程序必須在這種情況下繼續運行,請將有問題的代碼放在一個單獨的進程中,並通過IPC進行通信。 也就是說,boost在boost-asio庫中提供了一個很好的集成signal_set
來處理信號。
void handler(
const boost::system::error_code& error,
int signal_number
)
{
if (!error)
{
// A signal occurred.
}
}
...
// Construct a signal set registered for process termination.
boost::asio::signal_set signals(io_service, SIGINT, SIGTERM);
// Start an asynchronous wait for one of the signals to occur.
signals.async_wait(handler);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.