Fonctions de la bibliothèque C -pause()
Bibliothèque standard C - <signal.h>
pauseLa fonction est une fonction de la bibliothèque standard C, utilisée pour suspendre (mettre en pause l'exécution) un processus jusqu'à ce qu'un signal soit capté. Cette fonction est définie dans<unistd.h>Dans le fichier d'en-tête.
Syntaxe
int pause(void);
Paramètre
pauseLa fonction n'accepte aucun paramètre.
Valeur de retour
- En cas de succès
pauseLa fonction ne retourne pas, car le processus est interrompu par le gestionnaire de signal. - En cas d'échec, elle renvoie -1, et
errnoDéfini àEINTR, ce qui indique que la fonction a été interrompue par un signal.
Exemple
Ce qui suit est un exemple utilisantpauseExemple de programme de la fonction. Ce programme met en place un gestionnaire de signal qui, lorsqu'il intercepte leSIGINTsignal (généralement déclenché par Ctrl+C), reprend après une suspension.
Exemple
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
// Gestionnaire de signal
void handle_sigint(int sig) {
printf("Signal intercepté %d\n", sig);
}
int main() {
// Définir le gestionnaire de signal pour SIGINT
signal(SIGINT, handle_sigint);
// Suspendre le processus, attendre un signal
printf("En attente de SIGINT (appuyez sur Ctrl+C)...\n");
⟦0⟧();
printf("Sortie...\n");
return 0;
}
#include <signal.h>
#include <unistd.h>
// Gestionnaire de signal
void handle_sigint(int sig) {
printf("Signal intercepté %d\n", sig);
}
int main() {
// Définir le gestionnaire de signal pour SIGINT
signal(SIGINT, handle_sigint);
// Suspendre le processus, attendre un signal
printf("En attente de SIGINT (appuyez sur Ctrl+C)...\n");
⟦0⟧();
printf("Sortie...\n");
return 0;
}
Après compilation et exécution du programme, la sortie sera :
Waiting for SIGINT (press Ctrl+C)...
Lorsque vous appuyez sur Ctrl+C (envoi duSIGINTsignal), la sortie sera :
Explication
signal(SIGINT, handle_sigint);: ParamètresSIGINTLe gestionnaire de signal esthandle_sigint。pause();: suspend le processus, en attendant l'arrivée d'un signal. Lors de la captureSIGINTLorsqu'un signal se produit,handle_sigintLa fonction est appelée.- Après l'exécution du gestionnaire de signal,
pausela fonction renvoie -1, et le programme continue d'exécuter le code suivant.
Notes
pauseLa fonction est généralement utilisée dans les programmes pilotés par signaux pour suspendre un processus et attendre un signal spécifique.- Dans
pausePendant que la fonction est en suspension, l'exécution du processus est mise en pause jusqu'à ce qu'un signal soit capturé. - Lors du traitement des signaux, il faut prêter attention à la sécurité des signaux ; le gestionnaire de signal doit être aussi court que possible et n'effectuer que des opérations sûres.