En Linux, la señal también se denomina interrupción suave. El proceso procesa la señal después de recibir la señal, lo que se puede decir que es un proceso de interrupción. Este artículo le dará una breve explicación del mecanismo de señalización de Linux.
1, la función de procesamiento de señal se instala
en el nivel de la programación del sistema más directamente relacionada con la relación entre las señales de proceso y tiene dos funciones, que se utilizan para instalar la función de procesamiento de señal: < Br>
señal sighandler_t (int signum, sighandler_t handler);
int sigaction (int signum, const struct sigaction * act ,, struct sigaction * oldact);
primera función La señal es relativamente simple, sighandler_t es un alias, su prototipo es typedef void (* sighandler_t) (int), que es un puntero a función, acepta un parámetro de tipo int (número de señal), devuelve void. Por ejemplo, para procesar la señal SIGUSR1:
void handler (int sig)
<<> <
//La función strsiganl es convertir el número de la señal a la cadena de la descripción de la señal < Br>
printf (" Rcv una señal:% s ", strsignal (sig));
}
int main ()
{
señal
(SIGUSR1, controlador);
while (1)
;
}
(Este programa es realmente problemático, Como veré más adelante, este programa es originalmente un bucle infinito, pero enviándole una señal SIGUSR1, el programa pasará del tiempo en la "interrupción" para ejecutar el código en el controlador. En el shell, use el comando kill para enviar la señal SIGUSR1. El programa luego promete una información como esta: Rcv una señal: Señal definida por el usuario 1. El uso de la señal () es casi tan simple como eso. Sin embargo, por razones de portabilidad, la siguiente función debe usarse al participar en el desarrollo del proyecto.
Hay dos estructuras en los parámetros de la función sigaction (). El prototipo de la página de manual es el siguiente:
struct sigaction {
void (* sa_handler) (int); Br>
void (* sa_sigaction) (int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (* sa_restorer) ( Void);
};
Por lo que sé, sa_handler y sa_sigaction están en realidad en una unión, son indicadores para señalar a los manejadores.
sa_mask es la señal a enmascarar, y sa_flags tiene varias opciones.
(Más sobre estos dos puntos más adelante). Desde el prototipo sigaction (), podemos encontrar que hay dos parámetros struct sigaction en el parámetro, donde act es el procesamiento de la señal que se va a instalar, y oldact se usa para recuperar el método de procesamiento original para que podamos recuperarlo después del procesamiento de la señal. Si no necesita recuperar el método de procesamiento de señal anterior, puede establecer el tercer parámetro en NULL. Si solo desea obtener el método de procesamiento anterior en lugar de instalar un nuevo procesamiento de señal, puede establecer el segundo parámetro en NULL. La señal () no está disponible. Reescribir el ejemplo anterior con sigaction () es así:
1 void handler (int sig)
2 {
3 printf (" Rcv a signal:% s ", strsignal (sig));
4}
5
6 int main ()
7 {
8 struct Sigaction act;
9 sigemptyset (&act.sa_mask);
10 act.sa_handler = handler;
11 act.sa_flags = 0;
12 sigaction (SIGUSR1, &act, NULL);
13 while (1)
14;
15} Anterior12Siguiente Total 2 Páginas
Si no modifica la contraseña raíz de mysql a través de la función password () en el
Lámpara sistema CentOS6.5 es un entorno común yum, yum método LAMP en la instalación del sistema Cen
Algunos usuarios han instalado BackTrack para su propia computadora, que es un sistema operativo Lin
Hay muchos comandos en el sistema Linux. Una gran parte del sistema Linux de Linux
Cómo instala y configura Fedora el servicio Samba
Después de reinstalar Linux, no puedo conectarme a la red. Cómo resolver
Cómo usar el comando de historial en Linux
El error del servicio sshd de inicio de Linux no puede cargar el host cómo hacerlo.
El sistema Linux usa comandos para mantener el método RHCS
Ubuntu 12.04 se informa en que Ubuntu se ejecuta en modo de gráficos bajos
¿Cómo ejecutar el compilador con privilegios de root bajo Linux?
Ubuntu 13.10 pasos para abrir notificaciones de escritorio VLC
Compresión de Linux de imágenes JPEG a través de la línea de comandos
¿Cómo verificar SHA1 y MD5 en el sistema Linux?
Windows 10 una gran cantidad de exposición de aplicaciones Alipay no abandonó Windows Phone
Tiempo de inactividad del sistema Medidas de emergencia para datos no respaldados (1)
Preguntas sobre la activación de Win 7
Paso a paso le enseñará a instalar la máquina virtual VMware
Instalación para principiantes, debe conocer las características de la computadora con Windows7
Active la protección en tiempo real para sistemas Windows 8
Win 10 se convierte en modo de servicio
¿Qué debo hacer si la computadora del sistema Win8 no puede abrir la interfaz de Metro?