The manual page hat die Antwort:
Es durch die bitweise gebildet wird, oder von null oder mehr der folgenden: [...]
So würden Sie etwas tun, wie
Diese Art, mehrere unabhängige Flags als einzelne Bits in einer Ganzzahl darzustellen, ist in der gesamten Programmierung sehr verbreitet, und sicherlich in C. Es ist easil y verfügbar, da die bitweise Manipulation in C einfach und oft wünschenswert ist, da es sich um eine sehr einfache Implementierung handelt.
Eine „moderne“ (ausführlich und/oder Bloaty McBloatface) Ansatz Bitfelder in einer Struktur zu verwenden, könnte sein:
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;
/* ... */
};
Dies macht das sa_flags
Mitglied in struct sigaction
selbst ein struct
sein, die besteht aus ein Bündel von 1-Bit breiten unsigned int
Mitgliedern. Dies wird normalerweise auf den gleichen bitweisen Code kompiliert, aber es ist klarer.
Sie würden mehrere Flags gesetzt durch explizite Sätze tun:
sa1.sa_flags.sa_nodefer = 1;
sa1.sa_flags.sa_siginfo = 1;
und Sie würden eine andere Art und Weise müssen sicherstellen, dass der Rest auf 0
gesetzt wurde