Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> Systémy >> unix >> .

Napíšte program na nájdenie všetkých blokovaných signálov procesu v programovaní UNIX?

Tento program používa funkciu „Sigprocmask“ na získanie aktuálnej signálnej masky procesu. Signálna maska ​​predstavuje množinu signálov, ktoré sú momentálne blokované. Potom iteruje signály a tlačí tie, ktoré sú zablokované.

`` 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ď.).

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené