0
處理kqueue
信號時有沒有辦法獲得siginfo_t
結構? 處理kqueue信號時獲取siginfo_t
處理kqueue
信號時有沒有辦法獲得siginfo_t
結構? 處理kqueue信號時獲取siginfo_t
這是不幸的是不可能的(在Linux與epoll
類似struct signalfd_siginfo
處理信號時,通過簡單地從signalfd
閱讀獲得)。
通過kqueue
的信號傳遞通知發生在處理本身已經對信號作出反應之後;即它們是交付後通知,而不是交貨通知。
如果該過程接收的呼叫之間的多個信號,以kevent
,那麼所有的系統所做的是聚集的次數的信號已在kevent
結構的data
場被輸送的數目。
這意味着無法獲取信號信息,因爲在調用kevent
數據時,信號已經傳遞到進程,並且信號細節已被丟棄。沒有內部機制可以記錄kevent
可能提供的底層信號信息。
我正在讀一些大的書呆子牧場書,這似乎表明如果有一個註冊過程的處理程序不會發生信號的kqueue處理。這似乎不是優勝美地上的行爲,即使您使用
sigaction
或signal
註冊了處理程序,您也會收到信號事件。