Linux程序设计第二版练习题(第七章)

本文提供三个程序设计题目,涉及Linux下处理中断信号(+Z/C)及管道通信。第一题实现无限循环,两次中断退出;第二题确保中断不影响程序主体;第三题通过管道实现“ls -l”与“grep”命令的交互操作。
摘要由CSDN通过智能技术生成

1、设计一个程序,要求程序运行后进入一个无限循环,当用户按下中断键(+Z)时,进入程序的自定义信号处理函数,当用户再次按下中断键(+Z)后,结束程序运行。

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
void fun_ctrl_z();
int main()
{
	signal(SIGTSTP,fun_ctrl_z);
	printf("主程序:程序进入一个无限循环!\n");
	while(1)
	{
		printf("这是一个无限循环(要退出请按<Ctrl>+Z键)!\n");
		sleep(3);
	}
	exit(0);
}
void fun_ctrl_z()
{
	printf("你按了<Ctrl>+Z键");
	signal(SIGTSTP,SIG_DFL);
}

2、设计一个程序,要求程序主题运行时,即使用户按下中断键(+C),也不能影响正在运行的程序,等程序主体运行完毕后才进入自定义信号处理函数。

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
void fun_ctrl_c();
int main()
{
	int i;
	sigset_t set,pendset;
	struct sigaction action;
	signal(SIGINT,fun_ctrl_c);
	if(s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值