进程间通信测试-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);
}
  • 编译

  • 运行结果

posted @ 2022-11-10 09:40  无响应trance少年  阅读(18)  评论(0编辑  收藏  举报