Ayuda para la programación del sistema operativo
#includelt;stdlib.hgt;
#includelt;signal.hgt;
#includelt;sys/types.hgt ;
#includelt;unistd.hgt;
#include "matemáticas.
void fun_ctrl_c();
void fun_ctrl_z()
void fun_ctrl_d();
int main()
{
int
sigset_t; establecer, pendset;
estructura sigaction acción
(void)signal(SIGINT, fun_ctrl_c);
(void)signal(SIGTSTP, fun_ctrl_z); /p>
(void)signal(SIGQUIT, fun_ctrl_d);
if (sigemptyset(amp;set) lt; 0)
perror("Error de configuración de señal de inicialización" );
if (sigaddset(amp; set, SIGQUIT) lt; 0)
perror("Ctrl \");
if (sigaddset(amp ; set, SIGTSTP) lt; 0)
perror ("Ctrl Z agregar error de configuración de señal");
if (sigprocmask(SIG_BLOCK, amp; set, NULL) lt; 0 )
perror("Error al agregar un conjunto de señales al conjunto de bloqueo de señales"); = 0; i lt; 10; i) {
printf("El procesamiento de la señal Ctrl \ ?trl Z está en estado de bloqueo y la señal 'Ctrl C' se puede procesar a tiempo"); /p>
dormir(3);
}
}
if ( sigprocmask(SIG_UNBLOCK, amp; set, NULL) lt; 0)
perror("Error al eliminar un conjunto de señales del conjunto de bloqueo de señales");
}
void fun_ctrl_d()
{
int i, j, n;
printf("\t presionaste Ctrl \¿ha pasado mucho tiempo para ignorarte?\n"); > srand((int) tiempo(0));
for(i=0;ilt;10;i)
{
j=1 ( int)(100.0*rand ()/(RAND_MAX 2.0));
Función de intercambio de números aleatorios (no cambia el número de cambios)
p>
printf(" d ",j);
}
printf("\n"); nlt; 4; n )
printf("\t Procesamiento Ctrl \ función de procesamiento de señal\n");
}
void fun_ctrl_z() / * Función de procesamiento de señal personalizada*/
{
int n;
printf("\t presionaste Ctrl Z, ¿el sistema te ignoró durante mucho tiempo? \n");
int i, j;
for(i=0; ilt; 6; i)
{
Personalice la función de procesamiento de señales para generar gráficos (busque el código en línea)
printf("\n");
}
for(n = 0; n lt; 6; n )
printf("\t está procesando la función de procesamiento de señal Ctrl Z \n");
}
void fun_ctrl_c( ) /*Función de procesamiento de señal personalizada*/
{
int n;
printf("/t presionaste Ctrl C' El sistema procesó esto función de procesamiento de señal en el tiempo \n");
for(n=0;nlt;2;n )
printf("/t está procesando la función de procesamiento de señal Ctrl C / n");
}
Compilar: [root@localhost root]# vi 4.c
Ejecutar: [root@localhost root]# gcc - o 4 4.c
[root@localhost root]# ./4
Mostrar resultados:
Ctrl \ ?trl Z el procesamiento de la señal está bloqueado, la señal "Ctrl C" se puede procesar de manera oportuna
El procesamiento de la señal Ctrl \ ?trl Z está en un estado de bloqueo y la señal "Ctrl C" se puede procesar de manera oportuna
Ctrl \ ?trl Z procesamiento de señal en un estado de bloqueo, la señal 'Ctrl C' se puede procesar de manera oportuna
Ctrl \ ?trl Z El procesamiento de señal está en un estado de bloqueo, y la señal 'Ctrl C' se puede procesar de manera oportuna
Ctrl \ ?trl Z El procesamiento de la señal está en un estado de bloqueo y la señal 'Ctrl C' se puede procesar de manera oportuna
Ctrl \ ?trl Z El procesamiento de la señal está en un estado de bloqueo y la señal 'Ctrl C' se puede procesar de manera oportuna
Ctrl \ ?trl Z el procesamiento de la señal está en un estado de bloqueo , y la señal 'Ctrl C' se puede procesar de manera oportuna
El procesamiento de la señal Ctrl \ ?trl Z está en un estado de bloqueo, y la señal 'Ctrl C' se puede procesar de manera oportuna
Ctrl \ ?trl Z el procesamiento de la señal está en un estado de bloqueo y la señal 'Ctrl C' se puede procesar a tiempo
Ctrl \ ?trl Z El procesamiento de la señal está en un estado de bloqueo , y la señal 'C' se puede procesar de manera oportuna
señal trl C'
¿Pulsaste Ctrl Z y el sistema te ignoró durante mucho tiempo?
Personalice el gráfico de salida de la función de procesamiento de señales (genera este gráfico)
La función de procesamiento de señales Ctrl Z se está procesando
La función de procesamiento de señales Ctrl Z se está procesando
Se está procesando la función de procesamiento de señal Ctrl Z
Se está procesando la función de procesamiento de señal Ctrl Z
Se está procesando la función de procesamiento de señal Ctrl Z
La función de procesamiento de señal Ctrl Z se está procesando