與處理異步信號相比,我試圖找到處理同步信號(SIGSEGV,SIGILL等)的資源。處理同步信號
的典型的信號處理機制(使用kill,例如)調用來自內核的控制轉移到用戶模式信號處理程序。我的理解是,'同步'信號更像是系統調用,因爲控制器會立即傳輸到內核 - 可能是因爲同步信號通常與CPU中斷(內存保護等)相關聯,並且無論如何都會調用內核處理程序。
libc函數是否是'async-signal-unsafe'安全地用於同步信號處理程序?例如,我看到Linux mprotect(2)手冊頁在SIGSEGV處理程序中使用printf。我怎樣才能確定一個函數是否可以在這些情況下使用?
如何同步信號的一個典型的類Unix內核的處理來自其處理異步信號的有什麼不同?什麼使他們「同步」?
定義的信號是不是異步? –
我不確定。這表示有兩種類型:ftp://ftp.gnu.org/old-gnu/Manuals/glibc-2.2.3/html_chapter/libc_24.html。 –