簡體   English   中英

提升線程和信號處理能力

[英]Boost thread and signal handling

我想知道如何使用boost線程捕獲信號。 我知道如何使用pthreads做到這一點,但無法在boost中找到解決方案。

我想在線程中捕獲像sigsegv等錯誤異常信號,以便整個程序在一個線程出現此錯誤時不會崩潰。

我總是可以直接使用底層的pthread庫來做這個,但是想知道在boost::thread是否有一種可移植的方法。

收到SEGV信號后,您的進程無法可靠地恢復執行。 如果您的程序必須在這種情況下繼續運行,請將有問題的代碼放在一個單獨的進程中,並通過IPC進行通信。 也就是說,boost在庫中提供了一個很好的集成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM