Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
`` C
#include
#include
int main () {
Sigset_t bloked_signals;
int i;
// Získajte aktuálnu sadu blokovaných signálov
if (Sigprocmask (0, null, &blocked_signals) ==-1) {
Perror („Sigprocmask“);
návrat 1;
}
printf ("Blokované signály:\ n");
pre (i =1; i
if (Sigismember (&bloked_signals, i)) {
// Skontrolujte, či je signál blokovaný. Sigismember vráti 1, ak je členom súboru
printf ("signál %d ( %s) \ n", i, strsignal (i)); // Strsignal prevádza číslo signálu na reťazec
// Ak Strsignal nefunguje (niektoré systémy ho nemusia podporovať), môžete použiť vyhľadávaciu tabuľku
// alebo manuálne vytlačte číslo signálu.
}
}
návrat 0;
}
`` `
Zostaviť a spustiť tento kód:
1. uložiť: Uložte kód ako súbor `.c` (napr.„ Blocked_signals.c`).
2. kompilácie: Na zostavenie kódu použite kompilátor C (napríklad GCC):
`` `Bash
GCC bloked_signals.c -o bloked_signals
`` `
3. Run: Vykonajte kompilovaný program:
`` `Bash
./blocked_signals
`` `
Výstup uvedie zoznam čísel signálu a ich názvy (ak sú k dispozícii prostredníctvom `Strsignal`), ktoré sú v súčasnosti blokované pre tento proces. Všimnite si, že sada blokovaných signálov bude závisieť od aktuálneho stavu procesu a akéhokoľvek nastaveného spracovania signálu.
Dôležité úvahy:
* Manipulácia s chybami: Kód obsahuje základné spracovanie chýb pre `Sigprocmask`. Robustné aplikácie by mali pridať komplexnejšie kontroly chýb.
* Názvy signálov: Funkcia `Strsignal` nie je zaručená, že bude k dispozícii vo všetkých systémoch alebo poskytuje mená pre všetky signály. Možno budete musieť spracovať prípady, keď sa vracia null, alebo pomocou vlastnej vyhľadávacej tabuľky na mapovanie čísel signálov na mená.
* čísla signálu: Rozsah čísel signálu (`NSIG`) je závislý od systému. Zvyčajne sa definuje v `
* privilégiá: Získanie informácií o signáloch môže vyžadovať konkrétne privilégiá (napr. Beh ako root). Ak sa stretnete s chybami o povolení, mohla by to byť príčinou.
Nezabudnite sa poradiť s dokumentáciou vášho systému, kde nájdete podrobnosti o spracovaní signálu a konkrétnych dostupných signáloch. Správanie a dostupnosť funkcií súvisiacich so signálmi sa môžu mierne líšiť v rámci operačných systémov podobných UNIX (Linux, MACOS, BSD atď.).