📄 lat_signal.c
字号:
#include "unpipc.h"static int counter, nloop;static pid_t childpid, parentpid;voidsig_usr1(int signo){ Kill(parentpid, SIGUSR2); /* child receives USR1, sends USR2 */ return;}voidsig_usr2(int signo){ if (++counter < nloop) Kill(childpid, SIGUSR1); /* parent receives USR2, sends USR1 */ else Kill(parentpid, SIGTERM); /* parent terminates below */ return;}voidsig_term(int signo){ printf("latency: %.3f usec\n", Stop_time() / nloop); Kill(childpid, SIGTERM); exit(0);}intmain(int argc, char **argv){ if (argc != 2) err_quit("usage: lat_signal <#loops>"); nloop = atoi(argv[1]); counter = 0; parentpid = getpid(); Signal(SIGUSR1, sig_usr1); /* for child */ Signal(SIGUSR2, sig_usr2); /* for parent */ if ( (childpid = Fork()) == 0) { for ( ; ; ) { /* child */ pause(); } exit(0); /* never reached */ } /* 4parent */ Signal(SIGTERM, sig_term); /* for parent only */ Start_time(); Kill(childpid, SIGUSR1); for ( ; ; ) pause();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -