题目:实现两个程序mysignal、mycontrl,mycontrl给mysignal发送SIGINT信号,控制mysignal是否在屏幕打印“hello”字符串。

//捕捉信号

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>#include <unistd.h>
#include <signal.h>int flag=0;void catch_sig(int sign)
{switch(sign){case SIGINT:flag=flag==0?1:0;break;case SIGALRM:exit(0);}
}int mysignal(int sign,void (*func)(int))
{struct sigaction act,oact;act.sa_handler=func;sigemptyset(&act.sa_mask);act.sa_flags=0;return sigaction(sign,&act,&oact);
}int main(int arg,char *args[])
{//注册信号
    mysignal(SIGINT,catch_sig);mysignal(SIGALRM,catch_sig);while(1){if(flag==1)printf("hello\n");sleep(1);}return 0;
}

//发送信号
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>#include <unistd.h>
#include <sys/types.h>
#include <signal.h>int main(int arg,char * args[])
{if(arg<2){printf("请输入一个参数!\n");return -1;}int resid=0;pid_t pid=atoi(args[1]);resid=kill(pid,SIGALRM);if(resid!=0){printf("error message:%s\n",strerror(errno));return -1;}return 0;
}

.SUFFIXES:.c .o
CC=gcc
SRCS=mycontrl.c
OBJS=$(SRCS:.c=.o)
EXEC=contrlstart:$(OBJS)$(CC) -o $(EXEC) $(OBJS)@echo "^_^-----OK------^_^"
.c.o:$(CC) -Wall -g -o $@ -c $<
clean:rm -f $(OBJS)rm -f $(EXEC)

转载于:https://www.cnblogs.com/zhanggaofeng/p/5851289.html

Linux Linux程序练习七相关推荐

  1. linux应用程序安装与管理

    一.Linux应用程序与命令的关系 1.基本命令是Linux系统中不可缺少的组成部分 <?xml:namespace prefix = o ns = "urn:schemas-micr ...

  2. 成为 Linux 终端高手的七种武器

    成为 Linux 终端高手的七种武器 2017-03-23 17:34:31     来源:    点击:0 inux 终端不仅是一个键入命令的地方.如若你能熟谙这些基础技巧,那么你会在绝大多数 Li ...

  3. linux应用程序接收文件,Linux应用程序学习之文件编程

    Linux应用程序学习之文件系统调用函数编程 上一篇我们了解了Linux系统下函数库的设计方法,这一章我们就来学习一下linux系统下常用的文件操作函数,在进行系统文件操作函数介绍前,我们首先要明白一 ...

  4. Linux系统编程(七)消息队列

    Linux系统编程(七)消息队列 一.什么是消息队列 二.消息队列内部原理 三.实现消息队列的收发 1.发送消息队列 2.接收消息队列 四.消息队列与命名管道的比较 一.什么是消息队列 消息队列提供了 ...

  5. 十天学Linux内核之第七天---电源开和关时都发生了什么

    十天学Linux内核之第七天---电源开和关时都发生了什么 原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差 ...

  6. Linux学习笔记(七):文件压缩、打包与备份

    Linux学习笔记(七):文件压缩.打包与备份 常见的压缩指令 gzip, zcat/zmore/zless/zgrep bzip2, bzcat/bzmore/bzless/bzgrep xz, x ...

  7. linux应用程序开发题库,Linux应用程序开发练习题ppt课件

    .,Linux应用程序开发练习题,.,练习结构,.,第二章Linux操作,用cd命令进入到/etc文件夹用ls命令查看/etc文件家里面的所有内容用ls–dl选项显示/etc文件夹的属性用pwd命令查 ...

  8. linux高级程序复习(未完,整理比较粗糙)

    Shell编程 1. bash的功能 1.tab补全 2.历史补全 3.别名alias 4通配符 2. 变量 1.环境变量 (PATH路径 HOME当前用户的工作目录 MAIL邮件设置 LANG语言L ...

  9. Linux内核分析 第七周 可执行程序的装载

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七 ...

  10. linux终端输出c语言程序,Linux终端程序用c语言实现改变输出的字的颜色

    颜色代码: 格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo "\033[41;36m something here \033 ...

最新文章

  1. 电路图中常用的英文缩写的中文解释
  2. ospf专题二:虚链路
  3. TreeView的异步延时加载
  4. meta标签的使用方法(PC端)
  5. arcgis字段计算器--随机数
  6. flex 左右布局_web前端学习:移动端开发常用布局—前端弹性布局总结
  7. git的一些简单使用
  8. 注解定时器_细数那些使用过的定时器
  9. STM32F4 + HAL库 + W25Q256的验证
  10. 高级测试开发工程师简历模板
  11. 不格式化改U盘文件系统格式
  12. 计算的威力,智慧的传奇——Fabrice Bellard
  13. 20220119思维导图
  14. 编译原理中Follow集的求法
  15. 介绍一种AI的抠图方法
  16. 联想小新 Pro 16 2023 评测
  17. wireshark 抓包使用教程
  18. 400错误可能的原因
  19. Linux的bind服务
  20. 学计算机得肩周炎,肩周炎的拔罐疗法

热门文章

  1. c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...
  2. SDOI2014 旅行
  3. PostgreSQL 、springboot 、spring data jpa 集成
  4. pytest+allure生成漂亮的报告+显示
  5. Oracle之例外(异常)
  6. OC --(5)-- 字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序...
  7. Silverlight WCF RIA服务(十三)数据 3
  8. .NET中栈和堆的比较1
  9. Android 使用mqtt实例,包括接收服务器推送以及上传数据到服务器
  10. Apache Nifi 实战:多表导入实现及填坑 GitChat连接