博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145235《信息安全系统设计基础》第十二周学习总结
阅读量:4915 次
发布时间:2019-06-11

本文共 912 字,大约阅读时间需要 3 分钟。

指针和声明

C语言中变量的声明类型

指针数组

如:int *daytab[13]

数组指针

int (*daytab1)[13]

指针函数

int *comp()

函数指针

int (*comp1)()

类型识别方法:右左右左法

信号处理

 信号

  • 信号时UNIX中所使用的进程通信的一种最古老的方法。
  • 信号时在软件层次上对终端机制的之中模拟,它是比较复杂的通信方式,用于通知进程有某时发生,一个进程接收到一个信号与处理器收到的一个中断请求效果上可以说是一样的。
  • Linux中的信号

信号信息:

  • kill -l可以查看各种信号信息。每个信号都由一个编号和一个宏定义。
  •  

  • man 7 signal:可以了解,信号在什么条件下产生,默认的处理动作是什么。

 

信号生命周期

信号产生

  • 用户产生
  • 硬件产生
  • 进程产生:如kill -2 5245
  • 内核产生

信号注册

信号注销

信号处理

默认操作

忽略信号

捕捉信号

man -k signal

 

man 2 signal 查看signal的帮助文档

 

sigdemo1.c

 

通过代码可以得知,程序执行10秒,在十秒内检测信号并捕捉,最后打印所捕捉的信号。运行结果:

可以看出,第一行并没有有个一,并不是我自己输入的,而是标准输出。其他结果和代码分析一致。

sigdemo2.c

 通过signal函数,可以得知,信号由键盘输入产生,SIG-IGN代表忽SIGINT,while是个死循环,感觉这个代码没什么意义。运行看看:

这个程序确实很无聊,通过键盘无法终止死循环,也就是把键盘终止的命令也给忽略了,若把信号处理参数改为SIG-DFL便可通过键盘终止。

 signal()函数的不足:

  • 不知道信号被发送的原因
  • 信号处理过程中不能安全地阻塞其他信号

sigaction()函数:

  • 在信号处理程序被调用时,系统建立的新信号屏蔽字会自动包括正被递送的信号。因此保证了在处理一个给定的信号时,如果这种信号再次发生,那么它会被阻塞到对前一个信号的处理结束为止
  • 响应函数设置后就一直有效,不会重置

转载于:https://www.cnblogs.com/20145235litao/p/6130796.html

你可能感兴趣的文章
ajax联动
查看>>
职场小白,一路走来的心路历程
查看>>
某地址
查看>>
JS规则 较量较量(比较操作符) 两个操作数通过比较操作符进行比较,得到值为真(true)和假(false)。【>; <; >=; <=; !=;==】...
查看>>
shiro多Realm第一次调用不生效问题
查看>>
altera tcl
查看>>
BZOJ1579 [Usaco2009 Feb]Revamping Trails 道路升级
查看>>
枚举之三
查看>>
安装SQL的时候,设置用户权限失败
查看>>
列表中字符串按照某种规则排序的方法(python)
查看>>
未能找到元数据文件**.dll解决办法
查看>>
C# 对象间的 深拷贝 实现
查看>>
现代软件工程第一周作业
查看>>
git从已有分支拉新分支开发
查看>>
echarts之series,markLine、markPoint
查看>>
Java 算法
查看>>
WinRAR 激活的小办法
查看>>
Java奇淫巧技之Lombok
查看>>
7层网络模型
查看>>
[TCP/IP详解:学习笔记]ARP:地址解析协议
查看>>