C SIGPROCMASK FUNZIONE UTILIZZO

C SIGPROCMASK FUNZIONE UTILIZZO
Potresti aver sentito parlare della programmazione di socket in C. Una delle funzioni socket è la funzione "Sigprocmask". Questa funzione è stata generalmente utilizzata nel codice per ispezionare o alterare la maschera del segnale della funzione di chiamata. La maschera del segnale è un termine utilizzato per un gruppo di segnali che sono attualmente bloccati e non possono essere trasmessi per la funzione chiamante. Tale tipo di segnale è noto come "segnali bloccati."Puoi dire che un processo può ancora ricevere i segnali bloccati, ma non verrà utilizzato fino a quando non saranno sbloccati e rilasciati, io.e., sollevato. Fino ad allora, sarà in sospeso. Pertanto, all'interno della guida di oggi, discuteremo dell'uso della funzione Sigprocmask nella programmazione C. Iniziamo.

Dopo Ubuntu 20.04 Accesso riuscito, è necessario lanciare la shell di Ubuntu 20.04 Sistema per primo dopo l'accesso. Quindi, prova il collegamento "Ctrl+Alt+T" semplicemente sullo schermo del desktop. Lancerà il guscio del terminale per te in alcuni secondi. Assicurati di aggiornare il sistema utilizzando il pacchetto APT del sistema. Dopodiché, devi eseguire l'istruzione "tocco" insieme al nome del file che si desidera generare, io.e., Per creare il file C tramite la shell. Questo file appena creato è disponibile nella cartella "home" di File Explorer del sistema. Puoi provare a aprirlo con l'editor "testo" per creare codice in esso. Un altro modo per aprirlo nella shell è l'utilizzo dell'editor "GNU Nano" usando la parola chiave "nano" con un nome file come dimostrato sotto.

Esempio 01:

Abbiamo avviato il nostro codice nell'editor "Nano" includendo alcune intestazioni C necessarie. Queste intestazioni potrebbero essere le intestazioni più comuni come "stdio.h "," unistd.H "e" stdlib.H". A parte questo, il segnale di intestazione più importante ".H "è stato aggiunto per utilizzare le funzioni di gestione del segnale nel codice C. Tutto il lavoro è stato svolto nel metodo principale () di questo programma. Quindi, dopo aver avviato il metodo, abbiamo inizializzato alcune variabili di costruzione del segnale usando l'oggetto "Sigset_t", i.e., S, OS e PS. La "S" sta per il segnale, "OS" sta per un set di segnale originale e "PS" sta per un set di segnale in sospeso.

Il "SigemptySet" ha utilizzato il costrutto "S" per inizializzare o dichiarare una maschera di segnale e ignorare tutti i segnali. Successivamente, la funzione "Sigadddet" è stata utilizzata per aggiungere il segnale inizializzato "S" al set di segnale Sigint specificato. La routine del gestore del segnale Sigint si riferisce al "ctrl+c", i.e., carattere di interruzione. Fermerà l'esecuzione del processo corrente e tornerà al ciclo principale.

Ora arriva la funzione Sigprocmask qui usando tre parametri. Il parametro SIG_BLOCK mostra che tutti i segnali trovati in un set di segnale “S” verranno aggiunti al set di segnale di corrente. Il & s indica il puntatore a un set di segnale specifico che è stato utilizzato per alterare la maschera del segnale secondo il costrutto "Sigint". Il parametro "OS" punta verso il set di segnale che memorizza la maschera del segnale per un metodo particolare. L'istruzione printf è qui per visualizzare la vecchia maschera del segnale del set di segnale. La funzione "SIGPENDEND" è qui per salvare i dati relativi ai segnali all'interno del set di segnale in corso. L'istruzione Printf è di nuovo qui per mostrare il segnale in sospeso sul shell usando il costrutto "PS". Il metodo "Kill" è venuto qui per uccidere l'attuale processo usando l'ID del processo tramite la funzione "getpid ()". La funzione SIGPENDENDS viene nuovamente chiamata per ottenere i segnali in sospeso nel set e l'istruzione printf mostrerà quelli. La funzione SigProcmask utilizza il set predefinito "Sig_unblock" per continuare a sbloccare e raccogliere la funzione nell'elenco in sospeso. Il set di segnale "S" verrà rilasciato con l'aiuto della maschera del segnale "OS."

Compila il file del codice C utilizzando l'istruzione di fascia mostrata nella shell.

Il tuo file è stato eseguito. Ti mostrerà il vecchio segnale impostato sulla shell, "OS."Ma, poiché i segnali del set" s "sono ora bloccati, vedremo che i segnali stanno ricevendo ma in sospeso e non eseguono. Non possiamo uccidere il processo poiché l'elaborazione dei segnali è bloccato. Alla fine, abbiamo rilasciato i segnali.

Esempio 02:

Diamo un'occhiata a un altro esempio della funzione "Sigprocmask" è C per bloccare e sbloccare il set di segnale specifico. Quindi, abbiamo aggiunto un nuovo file e provato un nuovo codice. Innanzitutto, è necessario aggiungere gli stessi file di intestazione nel file di codice, come mostrato di seguito. La funzione "catcher" definita dall'utente è qui per visualizzare semplicemente che siamo all'interno di questa funzione utilizzando la sua funzione printf.

L'esecuzione principale inizia dalla funzione principale () del nostro codice. Contiene due argomenti. Prima di tutto, abbiamo utilizzato costrutti temporali "S" per Start e "F" per finire tramite la parola chiave "time_t". La sagzione della struttura è dichiarata come "sact" per impostare la natura per un segnale per fare qualcosa. Il costrutto "Sigset_t" viene utilizzato per dichiarare due set di segnale, i.e., "NS" per un nuovo set e "OS" per vecchi set. Viene dichiarata la variabile a doppio tipo "dif". Prima di tutto, la funzione SigemptySet viene utilizzata per inizializzare la maschera del segnale per la struttura "SACT" ed escludere tutti i segnali. Il gestore SA_FLAGS è stato utilizzato per BitMask of Sigaction e inizializzato a zero. Il "SA_HANDLER" è stato utilizzato per dichiarare la funzione "catcher" come gestore di segnale usando l'oggetto di sigazione "sact". La funzione di SIGAction è chiamata qui usando SigalRM per impostare l'allarme per il segnale "sact" qui.

Il "SigemptySet" è stato utilizzato sul segnale "NS" impostato per inizializzare una maschera del segnale ed escludere tutti i segnali. La funzione Sigadddet aggiunge il SigalRM al set di segnale "NS". Sigprocmask aggiunge i segnali "NS" al set di segnale di corrente. Il set di segnale "OS" rappresenta la maschera del segnale per un particolare processo. L'ora di inizio è stato notato e stampato utilizzando la funzione "ctime ()" in printf. L'allarme per 1 secondo viene inizializzato e il tempo di fine è stato notato. La differenza tra tempi di finitura e inizio è stata calcolata usando la funzione "Differetime". Se la differenza è inferiore a 10 secondi, la funzione SigProcmask utilizzerà il segnali "OS" per sostituire l'attuale maschera del segnale per un particolare processo usando Sig_setmask. L'ultima istruzione printf è qui per mostrare il tempo in cui un set di segnale viene rilasciato per gli allarmi.

Dopo aver compilato ed eseguito il file, ci mostra il tempo in cui il set di segnale di allarme è bloccato. Dopo alcuni secondi, viene chiamata la funzione Catcher e un'altra affermazione mostra il tempo di sblocco del segnale di allarme per il rilascio.

Conclusione:

Questo articolo mostra la spiegazione relativa all'utilizzo delle funzioni di Sigprocmask nella lingua C. Abbiamo discusso 2 esempi brevi e diretti per illustrare il funzionamento della funzione Sigprocmask insieme ad altre funzioni del segnale. Speriamo che questo articolo sia un bonus per ogni utente che è nuovo ai segnali.