Funciones de la biblioteca C -pause()
Biblioteca estándar de C - <signal.h>
pauseLa función es una función de la biblioteca estándar de C que se utiliza para suspender el proceso (pausar la ejecución) hasta que se capture una señal. Esta función está definida en<unistd.h>el archivo de cabecera.
Sintaxis
int pause(void);
Parámetros
pauseLa función no acepta ningún parámetro.
Valor de retorno
- En caso de éxito
pausela función no retorna, porque el proceso es interrumpido por el manejador de señales. - En caso de error, retorna -1 y
errnose estableceEINTR, lo que indica que la función fue interrumpida por una señal.
Ejemplo
El siguiente es un ejemplo que usapausela función. El programa configura un manejador de señales que, al capturarSIGINTla señal (generalmente activada por Ctrl+C), reanuda la suspensión.
Ejemplo
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
// Manejador de señales
void handle_sigint(int sig) {
printf("Caught signal %d\n", sig);
}
int main() {
// Configurar el manejador de señales para SIGINT
signal(SIGINT, handle_sigint);
// Suspender el proceso, esperando una señal
printf("Waiting for SIGINT (press Ctrl+C)...\n");
pause();
printf("Exiting...\n");
return 0;
}
#include <signal.h>
#include <unistd.h>
// Manejador de señales
void handle_sigint(int sig) {
printf("Caught signal %d\n", sig);
}
int main() {
// Configurar el manejador de señales para SIGINT
signal(SIGINT, handle_sigint);
// Suspender el proceso, esperando una señal
printf("Waiting for SIGINT (press Ctrl+C)...\n");
pause();
printf("Exiting...\n");
return 0;
}
Después de compilar y ejecutar el programa, la salida será:
Waiting for SIGINT (press Ctrl+C)...
Cuando se presiona Ctrl+C (se envíaSIGINTla señal), la salida será:
Explicación
signal(SIGINT, handle_sigint);: estableceSIGINTel manejador de señales dehandle_sigint。pause();: suspende el proceso, esperando que llegue la señal. Cuando se captura laSIGINTseñal,handle_sigintse invoca la función.- Después de que se ejecuta el manejador de señales,
pausela función retorna -1 y el programa continúa ejecutando el código posterior.
Notas
pauseLa función se usa generalmente en programas controlados por señales para suspender el proceso y esperar una señal específica.- En
pauseDurante la suspensión de la función, la ejecución del proceso se pausa hasta que se captura una señal. - Al manejar señales, se debe prestar atención a la seguridad de las señales; el manejador de señales debe ser lo más breve posible y solo realizar operaciones seguras.