De acuerdo con la función de suspensión interna del sistema, al conocer su proceso en ejecución, puede utilizar la función de alarma (), la función de pausa () y la función de sigaction (). Realizado
Parámetros de función y valores de retorno
Sintaxis de la tabla extra de Markdown:
Struct sigaction {void (* sa_handler) (int); void (sa_sigaction) (int, siginfo_t, void *); sigset_t sa_mask; int sa_flags; void (* sa_restorer) (void);} Los manejadores de señales pueden usar void (sa_handler) (int) o void (* sa_sigaction) (int, siginfo_t, void). La opción que se use dependerá de si el bit SA_SIGINFO está configurado en sa_flags. Si está configurado, use void (* sa_sigaction) (int, siginfo_t, void *). En este caso, puede enviar información adicional al controlador; de forma predeterminada, void (* sa_handler) ) (int), el valor de la señal solo se puede enviar al controlador en este momento. Sa_handler Este parámetro es el mismo que el controlador de parámetros de la señal (), que representa la nueva función de procesamiento de la señal. Para otros significados, consulte la señal (). Sa_mask se usa para establecer el conjunto de señales especificado por sa_mask para que se retenga temporalmente mientras se procesa esta señal. Sa_restorer Este parámetro no se utiliza. Sa_flags se utiliza para configurar otras operaciones relacionadas con el procesamiento de señales. Los siguientes valores están disponibles. Sa_flags también puede establecer otros indicadores: SA_RESETHAND: cuando se llama al manejador de señal, restablece el manejador de señal al valor predeterminado SIG_DFL SA_RESTART: si la señal interrumpe una llamada del proceso del sistema, el sistema inicia automáticamente la llamada del sistema SA_NODEFER: En general, el kernel bloqueará la señal dada cuando el manejador de señales se esté ejecutando. Sin embargo, si se establece el indicador SA_NODEFER, el kernel no bloqueará la señal cuando el controlador de señales se esté ejecutando.
mysleep código de implementación
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # include < stdio.h > # include < signal.h > vohand myhandler (int sig) {} int mysleep (int timeout) {struct sigaction act, oact; act .sa_handler = myhandler; sigemptyset (&act.sa_mask); Act.sa_flags = 0; sigaction (SIGALRM, &act, &oact); alarm (timeout); pause (); int ret = alarm (0); sigaction (SIGALRM, &oact, NULL); return ret; } int main () {while (1) {printf (" mysleep start ... \\ n "); mysleep (3); printf (" mysleep success \\ n ");} return 0;} < /señal .h > < /stdio.h> Procedimiento de ejecución
1) La función principal llama a la función mysleep. La función mysleep llama a sigaction para registrar la función handler myhandler para la señal SIGALRM. La función myhandler aquí no hace nada, pero no puede ser menor, porque el procesamiento predeterminado de la señal SIGALRM es terminar el proceso. 2) Llame a la alarma (timeout) para programar la alarma. 3) Llamada en pausa para esperar, el kernel cambia a otro proceso. 4) Después de un tiempo de espera, la alarma expira y el kernel envía SIGALRM al proceso. 5) Antes de que el estado del proceso devuelva el estado de usuario del proceso, la señal pendiente se procesa, se encuentra la señal SIGALRM y la función de procesamiento es myhandler. 6) Luego cambie al modo usuario para ejecutar la función myhandler. Al ingresar a la función myhandler, la señal SIGALRM se enmascara automáticamente. Al regresar de la función myhandler, la señal SIGALRM se desenmascara automáticamente. Luego, automáticamente ejecuta la llamada al sistema sigreturn para volver a ingresar al kernel, y luego regresa al flujo de control principal del estado del usuario para continuar el proceso de ejecución, es decir, la función principal llama a la función mysleep.
Primero, el comando superior 1. Función El comando superior se usa para mostrar el proceso
Muchos usuarios que son nuevos en Linux usarán el concepto de Windows para entender el sis
Primero encuentre el archivo de iptables Generalmente en /etc /sysconfig Luego vi iptab
La instalación de JDK solo necesita solucionar dos problemas, el directorio de instalación
Comando de consulta de rendimiento en Linux
Sistema dual de Windows y Linux: modifique la secuencia de inicio predeterminada
montaje común montaje de comandos
Ubuntu grieta red inalámbrica en
Configuración de PATH de la variable de entorno de Ubuntu Linux
Desarrollo de controlador de dispositivo PCI bajo Linux
El método para obtener el nombre del archivo de la ruta en el sistema Linux
Linux lftp connection ftp server upload comando de descarga
comandos de la aplicación intérprete de comandos reinicio Diccionario --linux 729 comando
Desactivar Windows 7 aviso de reinicio automático de actualización
Touchpad bajo Win8.1 afecta la escritura del teclado
Análisis exhaustivo del uso de vecinos en línea
Tutorial de reemplazo especial de Word
8 Habilidades avanzadas Diversión Administrador de tareas de Windows
Notas sobre los sistemas de pantalla de Windows 8 bloqueo suave fresco Recomendado