p8-7.c
来自「SUN Solaris8平台下进程间通信」· C语言 代码 · 共 42 行
C
42 行
#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 + =
减小字号Ctrl + -
显示快捷键?