信息安全系统设计基础 第12周学习笔记

第八章代码

exec1:

  execvp()会从PATH 环境变量所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。在结果中我们可以看出exevp函数调用成功没有返回,所以没有打印出“* * * ls is done. bye”。

exec2:


  

  exec1的区别就在于exevp函数的第一个参数,exec1传的是ls,exec2直接用的arglist[0],不过由定义可得这两个等价,运行结果相同。

exec3:

  execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了。所以运行结果同exec1。

forkdemo1:

  打印进程pid,然后调用fork函数生成子进程,休眠一秒后再次打印进程id,这时父进程打印子进程pid,子进程返回0。

forkdemo2:

  两次调用fork,产生四个子进程,会打印四个after输出。

forkdemo3:

  fork产生子进程,父进程返回子进程pid,不为0,所以输出父进程的那句话,子进程返回0,所以会输出子进程语句。

forkdemo4:

  先打印进程pid,然后fork创建子进程,父进程返回子进程pid,所以输出parent一句,休眠十秒;子进程返回0,所以输出child之后的语句。

forkgdb:

  父进程打印是先打印两句,然后休眠一秒,然后打印一句,子进程先打印一句,然后休眠一秒,然后打印两句。并且这两个线程是并发的,所以可以看到在一个线程休眠的那一秒,另一个线程在执行,并且线程之间相互独立互不干扰。

psh1:

  输入要执行的指令,回车表示输入结束,然后输入的每个参数对应到函数中,再调用对应的指令。

psh2:

  多了循环判断,不退出的话就会一直要你输入指令,并且对于子程序存在的状态条件。

testbuf1:

  换行输出
testbuf2:

  同上,代码是‘\n’。

testbuf3:

  不换行输出。将内容格式化输出到标准错误、输出流中。

 

testpid:

  输出当前进程pid和当前进程的父进程的pid。

testpp:

  不知何原因。

testsystem:

  执行shell命令,也就是向dos发送一条指令。这里是后面可以跟两个参数,然后向dos发送这两个命令,分别执行。输入ls和dir两个指令后分别执行。

waitdemo1:

  如果有子进程,则终止子进程,成功返回子进程pid。

waitdemo2:

  相对于上一个程序而言多了一个子进程的状态区分,把状态拆分成三块,exit,sig和core。

参考资料:http://www.cnblogs.com/20135202yjx/p/5003653.html

遇到的问题:

  一开始在文件夹中就有编译好的文件,想着直接运行,结果权限不够。最后直接一个个编译好运行出结果,验证代码。

  在testpp中罪域“段错误(核心已转储)”错误不知怎么解决。

时间: 2024-10-29 19:05:37

信息安全系统设计基础 第12周学习笔记的相关文章

20145309信息安全系统设计基础第12周学习总结后篇

指针与声明 声明 1.C语言中变量的声明 类型(type) 声明符(declarator) 2.最简单的声明是变量 3.指针数组 指针数组是一个数组 数组里的元素都是指针 例:int *daytab[13] 4.数组指针 数组指针是一个指针 指针指向一个类型和元素个数都固定的数组 例:int (*daytab1)[13] 5.指针函数 指针函数是函数 函数的返回值是指针类型 例:int *comp() 6.函数指针 函数指针是指针 指针指向函数 函数名就是函数指针 例:int (*comp1)(

信息安全系统设计基础 第4周学习笔记

信息的表示和处理 一.信息存储 ① 3种数字的表示:无符号编码.补码编码.浮点数编码. ② 二进制.八进制.十六进制转化 ③ 字:字长为w位,虚拟地址范围为0~2^w-1,程序最多访问2^w个字节. 数据大小:(short.long)int.char.long long.float.double ④ 寻址和字节顺序:  小端法:最低有效字节在最前面的方式(大多数Intel兼容机) 大端法:最高有效字节在最前面的方式(大多数IBM和Sun Microsystems) 双端法:可以设置其中一种. ⑤

信息安全系统设计基础 第5周学习笔记

第三章 程序的机器级表示 一.处理器历史——摩尔定律 摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的. 其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍.换言之,每一美元所能买到的电脑性能,将每隔18-24 个月翻一倍以上.这一定律揭示了信息技术进步的速度. 二.程序编码 linux默认编译器——gcc c编译器 过程: 后缀名解释: gcc常用选项: 三.数据格式 char—字节—b short

信息安全系统设计基础第八周学习笔记

系统级I/O 前言:输入/输出是在主存和外部设备(如磁盘驱动器.终端和网络)之间拷贝数据的过程.输入操作时从I/O设备拷贝数据到主存,而输出操作时从主存拷贝数据到I/O设备. 10.1  Unix I/O 一个Unix文件就是一个m个字节的序列:B0,B1,B2,B3...Bk...Bm-1. 所有的I/O设备,如网络.磁盘盒终端,都被模型化为文件,而所有的输入和输出都被当做对相应的文件的读和写来执行.这是一种应用接口,成为Unix I/O. ①打开文件:一个应用程序通过要求内核打开相应地文件,

2017-2018-1 20155228 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155228 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 常见的存储技术 RAM 随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的.静态 RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多.SRAM用来作为高速缓存存储 器,既可以在CPU芯片上,也可以在片下.DRAM用来作为主存以及图形系统的帧缓冲 区.典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆 字节. SRAM将每

2017-2018-1 20155334 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155334 <信息安全系统设计基础>第九周学习总结 学习目标: 了解常见的存储技术(RAM.ROM.磁盘.固态硬盘等) 理解局部性原理 理解缓存思想 理解局部性原理和缓存思想在存储层次结构中的应用 高速缓存的原理和应用 教材学习内容总结 一.常见的存储技术: 基本的存储技术包括随机存储器(RAM).非易失性存储器(ROM)和磁盘. 1. RAM分静态RAM(SRAM)和动态RAM(DRAM). 2. SRAM快些,主要用做CPU芯片上的高速缓存,也可以用作芯片下的

2017-2018-1 20155331 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155331 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 存储器层次结构 存储技术 随机访问存储器 随机访问存储器分为:静态的SRAM.动态的DRAM 静态RAM: SRAM的特点:存储器单元具有双稳态特性,只要有电就会永远保持它的值,干扰消除时,电路就会恢复到稳定值. 动态RAM: DRAM的特点:每一位的存储是对一个电容的充电:对干扰非常敏感. 用途:数码照相机和摄像机的传感器 DRAM存储不稳定的应对机制: 存储器系统必须周期性地通过读出,或者重

2017-2018-1 20155201 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155201 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 一.存储技术 DRAM和SRAM的特性: 静态RAM(SRAM) SRAM将每个位存储在一个双稳态的存储器单元里, 动态RAM(DRAM) DRAM将每个位存储为一个电容的充电.每个DRAM芯片被连接到某个成为存储控制器的电路,电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位. 存储器模块 磁盘存储 磁盘是由一个或多个叠放在一起的盘片组成的,被封装在一个密封的包装里,整个装

# 2018-2019-1 20165225《信息安全系统设计基础》第一周学习总结

2018-2019-1 20165225<信息安全系统设计基础>第一周学习总结 教材学习内容总结 vim的用法 命令行输入vimtutor即可随时查看: linux系统下文件的转换: gcc hello.c => 编译hello.c源程序,出现a.out文件 gcc -o hello hello.c => 编译hello.c源程序,出现hello文件 od -tc -tx1 hello.c => 按单字节查看文件内容 gcc -E hello.c -o hello.i =&g