Red de conocimiento informático - Aprendizaje de código fuente - Ayuda para la programación del sistema operativo

Ayuda para la programación del sistema operativo

#includelt;stdio.hgt;

#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