20145317《信息安全系统设计基础》第十二周学习总结1

20145317《信息安全系统设计基础》第十二周学习总结1

教材学习内容总结

第九周学习内容总结http://www.cnblogs.com/5317p/p/6052889.html

第十周学习内容总结http://www.cnblogs.com/5317p/p/6076074.html

第十一周学习内容总结http://www.cnblogs.com/5317p/p/6106708.html

视频学习内容总结

指针与声明

  • C语言中变量的声明包括两个部分:

    • 类型
    • 声明符
  • 对于简单类型,声明并不会对代码产生多大的阅读障碍,而对于复杂类型的识别,可以采用右左右左法进行判断。

指针数组与数组指针

  • 指针数组:即用于存储指针的数组,也就是数组元素都是指针
  • 举例说明:
    • int *a[10]
    • 表示:数组a中的元素都为int型指针
    • 元素表示:*a[i] *(a[i])也是一样的,因为[]优先级高于*
  • 数组指针:即指向数组的指针,指针指向一个类型和元素个数都固定的数组
  • 举例说明:
    • int (*a)[10]
    • 表示:指向数组a的指针
    • 元素表示:(*a)[i]
  • 指针函数:即返回值是指针类型的函数
  • 举例说明:
    • int *comp()
  • 函数指针:即指向函数的指针,函数名就是函数指针
  • 举例说明:
    • int (*comp1)()

右左右左法

  • 具体方法:

    • 从变量名开始,先右再左地,交替地一个一个向外看,在纸上写下:“变量是”
    • 若向右遇到左圆括号,在纸上写下:“函数,参数是”,并用同样的方法处理括号中每一个参数——在纸上写下:“返回”
    • 若向右遇到方括号,在纸上写下:“数组,长度为{方括号的内容},元素类型为”
    • 若向右遇到右圆括号,什么也不做
    • 若向左遇到*,在纸上写下:“指针,指向”
    • 若向左遇到任何类型,在纸上写下对应的类型名
  • 举例说明:分析void *(*(*fp1)(int))[10]
    • 从fp1开始——fp1是
    • 向右,遇到右括号,什么也不做
    • 向左,遇到*——指针,指向
    • 向右,遇到左圆括号——函数,参数是int,返回
    • 向左,遇到*——指针,指向
    • 向右,遇到左方括号——数组,长度为10,元素类型为
    • 向左,遇到*——指针,指向
    • 向右,已经到声明结尾,什么也不做
    • 向左,遇到void——void
  • 结果是:fp1是 指针,指向 函数,参数是int,返回指针,指向数组,长度为10,元素类型为 指针,指向 void

信号处理

  • 信号是Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会执行相应的操作。

信号的产生

  • 由用户产生,如:Ctrl+C产生SIGINT信号等,可以通过stty -a查看哪些按键可以产生信号
  • 由硬件产生,如:当前进程执行了除以0的指令
  • 由进程发送,如:可在shell进程下,使用命令 kill -信号标号 PID,向指定进程发送信号。
  • 由内核产生,如:闹钟超时产生SIGALRM信号。

信号的处理

  • 信号是由操作系统来处理的,说明信号的处理在内核态。信号不一定会立即被处理,此时会储存在信号的信号表中。
  • 处理过程示意图:
  • 信号的三种处理方式:
    • 忽略
    • 默认处理方式:操作系统设定的默认处理方式
    • 自定义信号处理方式:可自定义信号处理函数

signal与sigaction

    • signal的问题:

      • 不知道信号被发送的原因
      • 信号处理过程中不能安全地阻塞其他信号
    • sigaction:
      • 在信号处理程序被调用时,系统建立的新信号屏蔽字会自动包括正被递送的信号。因此保证了在处理一个给定的信号时,如果这种信号再次发生,那么它会被阻塞到对前一个信号的处理结束为止
      • 响应函数设置后就一直有效,不会重置
    • 所以希望能用相同方式处理信号的多次出现,最好用sigaction.信号只出现并处理一次,可以用signa
时间: 2024-12-29 23:56:08

20145317《信息安全系统设计基础》第十二周学习总结1的相关文章

信息安全系统设计基础第十二周学习总结

第十二周代码学习 一.environ.c #include <stdio.h> #include <stdlib.h> int main(void) { printf("PATH=%s\n", getenv("PATH")); setenv("PATH", "hello", 1); printf("PATH=%s\n", getenv("PATH")); #if

20135223何伟钦—信息安全系统设计基础第十二周学习总结

一.学习目标 1.掌握进程控制 2.掌握信号处理的方法 3.掌握管道和fifo进行进程间通信的方法 二.学习资源 编译.运行.阅读.理解process.tar.gz压缩包中的代码 三.编译.运行.阅读.理解代码 (1)exec1 execvp函数 表头文件: #include 定义函数: int execvp(const char file ,char const argv []); execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二

信息安全系统设计基础第十二周学习总结—20135227黄晓妍

第十二章 并发编程 操作系统提供了三种基本的构造并发程序的方法: 1.进程.每个逻辑控制流都是一个进程,由内核来调度和维护: 2.I/O多路复用. 3.线程.    一.基于进程的并发编程 在接受连接请求之后,服务器派生出一个子进程,这个子进程获得服务器描述表完整的拷贝.子进程关闭它的拷贝中监听描述符3,父进程关闭它的已连接描述符4的拷贝,因为不需要这些描述符了. 程序实例: 因为通常服务器会运行很长时间,所以需要一个SIGCHLD处理程序,来回收僵死进程.因为当SIGCHLD执行时,信号是阻塞

20135210程涵——信息安全系统设计基础第十二周学习总结

一.exec1.c:程序调用execvp:arglist是命令行的字符串数组,数组的第一个元素为程序名称,最后一个元素必须是null. 二.exec2.: exec2与exec1的区别就在于:execvp( arglist[0] , arglist ),不过这两个等价,所以运行结果是并无不同. execlp()函数属于exec()函数族,它是execve(2)函数的前端. execlp从PATH 环境变量中查找文件并执行.execlp()会从PATH 环境变量所指的目录中查找符合参数file的文

信息安全系统设计基础第十二周学习总结 ——20135308

exec1 代码: #include <stdio.h> #include <unistd.h> int main() { char *arglist[3]; arglist[0] = "ls"; arglist[1] = "-l"; arglist[2] = 0 ;//NULL printf("* * * About to exec ls -l\n"); execvp( "ls" , arglist

信息安全系统设计基础第十二周学习总结-吕松鸿

第十一章 网络编程 11.1客户端—服务器编程模型 1.一个服务器进程 -> 管理某种资源 -> 通过操作这种资源来为它的客户端提供某种服务. 2.一个或多个客户端进程. 3.基本操作:事务 当一个客户端需要服务时,向服务器发送一个请求,发起一个事务. - 服务器收到请求后,解释它,并以适当的方式操作它的资源. 服务器给客户端发送一个相应,并等待下一个请求. 客户端收到响应并处理它. 注意:客户端和服务器都是进程. 11.2网络 (1)对主机而言:网络是一种I/O设备 从网络上接收到的数据从适

信息安全系统设计基础第十二周总结

exec1 #include <stdio.h>#include <unistd.h> int main(){ char *arglist[3]; arglist[0] = "ls"; arglist[1] = "-l"; arglist[2] = 0 ;//NULL printf("* * * About to exec ls -l\n"); execvp( "ls" , arglist ); pri

20135304刘世鹏——信息安全系统设计基础第十二周总结

一.代码理解 1.env文件夹-environ.c代码 #include <stdio.h> #include <stdlib.h> int main(void) { printf("PATH=%s\n", getenv("PATH"));//getenv函数用来取得参数PATH环境变量的值,执行成功则返回该内容的指针 setenv("PATH", "hello", 1);//见下方解释 printf(

20145317《信息安全系统设计基础》第0周学习总结

20145317彭垚<信息安全系统设计基础>第0周学习总结 感想: 学生和老师的关系:健身教练和健身学员.学员想要健身塑造好的身材却不知道路径和方法,所以找到教练,教练需要做的是引导教会学生正确的锻炼姿势和锻炼方法,之后的事情就全看学员自己了. 对于新学期新课程,我希望自己能比上次学的认真,比上学期效率高,然后积极配合老师的教学工作,同时也不断提高自己. 问题: 第一章 计算机系统漫游 计算机操作系统中处理器.缓存器.以及内存等在运行中是如何配合运行的. 第二章 信息的表示和处理 计算机算数运

信息安全系统设计基础第十五周总结

信息安全系统设计基础第十五周总结 [内容:链接汇总] 一.每周读书笔记链接汇总 [第一周读书笔记] http://www.cnblogs.com/shadow135211/p/4824555.html [第二周读书笔记] http://www.cnblogs.com/shadow135211/p/4842258.html [第三周读书笔记] http://www.cnblogs.com/shadow135211/p/4854920.html [第四周读书笔记] (读书笔记从“第一周”开始命名,为