2014-02-27 75 views
2

假設我有一個不阻塞任何信號的多線程應用程序,並且有一個線程調用sigwait(),其掩碼爲SIGTERM。如果進程從外部收到SIGTERM,以下哪一項有保證?如果沒有線程阻塞信號,並且一個線程在`sigwait()`中,是否有保證被阻塞的線程會接收下一個信號?

  1. 阻止在sigwait()上的線程將收到它。
  2. 上面的線程是只有線程,它會收到它。

我檢查了man page,但它沒有解決這些問題。

回答

0

至少爲Linux:兩個possiblities沒有得到保證,如:

man 7 signal

的信號配置是每進程屬性:在多線程應用程序,的處置所有線程的特定信號都是相同的。

因此,多於一個線程不會阻止SIGINT那些可能收到它。