进程间通信测试-signal
进程间通信测试-signal
- 要求:基于sigaction编写一个信号处理程序,按下CTRL+C,打印奇数随机数,按下CTRL+\,打印偶数随机数,提交代码和运行结果截图。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <unistd.h>
#include <string.h>
#include<signal.h>
void inthandler(int s);
void quithandler(int s);
int main(int argc ,char *argv[])
{
char input[50];
int nchars;
signal(SIGINT,inthandler);
signal(SIGQUIT,quithandler);
do{
printf("\nType a message\n");
nchars = read(0,input,(50-1));
if(nchars==-1)
perror("read returned an error");
else{
input[nchars]='\0';
}
}
while (strncmp(input,"quit",4)!=0);
return 0;
}
void inthandler(int s)
{
printf("%d",rand()*2+1);
sleep(2);
}
void quithandler(int s)
{
printf("%d",rand()*2);
sleep(2);
}
-
编译
-
运行结果