2016-06-01 22 views

回答

2

The manual page了答案:[...]

所以,你會做這樣的事情

它是由位或零個或多個以下形成

sa1.sa_flags = SA_NODEFER | SA_SIGINFO; 

這種將多個獨立標誌位表示爲一個整數中的單個位的方式在所有編程中都非常普遍,當然在C中也很常見。它很容易因爲按位操作在C中很簡單,並且通常是可取的,因爲它是一個非常輕的實現。

更「現代」(詳細,和/或Bloaty McBloatface)的方法可能是使用位域在結構中:

struct sigaction { 
    /* ... */ 
    struct { 
    unsigned int sa_nocldstop : 1; 
    unsigned int sa_nocldwait : 1; 
    unsigned int sa_nodefer : 1; 
    unsigned int sa_nostack : 1; 
    unsigned int sa_siginfo : 1; 
    /* ... */ 
    } sa_flags; 
    /* ... */ 
}; 

這使得sa_flags構件在struct sigaction本身是一個struct,它由一堆1位寬的unsigned int成員。這通常會編譯成完全相同的按位代碼,但更清楚。

sa1.sa_flags.sa_nodefer = 1; 
sa1.sa_flags.sa_siginfo = 1; 

和你需要一些其他的方式,以確保得到休息設置爲0

你會做明確的套設置多個標誌