📄 p8-7.c
字号:
#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>volatile sig_atomic_t usr_interrupt = 0; /* 当到达SIGUSR1信号时设置此变量 */void synch_signal (int sig) /* SIGUSR1信号句柄 */{ usr_interrupt = 1;}/* 子进程执行此函数 */void child_function (void){ printf ("I'm here!!! My pid is %d.\n", (int) getpid ()); /* 通知父进程 */ kill (getppid(), SIGUSR1); /* 继续执行 */ puts ("Bye, now...."); exit (EXIT_SUCCESS);}int main(void){ struct sigaction usr_action; sigset_t block_mask; pid_t child_id; /* 建立信号句柄 */ sigfillset (&block_mask); usr_action.sa_handler = synch_signal; usr_action.sa_mask = block_mask; usr_action.sa_flags = 0; sigaction (SIGUSR1, &usr_action, NULL); /* 创建子进程 */ child_id = fork (); if (child_id == 0) child_function(); /* 子进程不返回 */ /* 等待子进程发送信号 */ while (!usr_interrupt) ; /* 收到信号后继续执行 */ puts ("That's all!"); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -