雖然是基礎知識, 一陣子沒用大概會忘記, 備忘一下重點:
- 在 multi-thread 情況下, signal() 的行為是未定義, 必須用 sigaction() 註冊 signal
- 用 kill 送 signal 給 process 後, process 內任何一個 thread 都有可能執行 signal handler。若不希望特定的 thread 收到 signal, 可用 pthread_sigmask() 改變特定 thread 的行為, 或是用 pthread_kill() 送出 signal 給指定的 thread
- SIGSEGV 會送給發生 segmentation fault 的 thread。所以有 core dump 的時候, gdb 可以正確找出那個 thread 造成 segfault
參考資料:
沒有留言:
張貼留言