2017-2018-1 20155330 《信息安全系统设计基础》第六周学习总结
教材学习内容总结
-
fork()函数
- 查看帮助文档
- fork基本功能:通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但初始参数或者传入的变量不同,两个进程也可以做不同的事。
- 原型:
pid_t fork( void);
- 运行fork.c文件
我们可以发现,在一次调用Fork()函数后,返回了两次。这是由于子进程继承了父进程所有的打开文件。
- 进程图
- 查看帮助文档
-
wait()函数&waitpid()函数
- wait()函数的帮助文档
由此可知,wait()函数是waitpid()的简单版本,wait()函数的返回情况分为两种:成功,返回子进程的pid;失败,返回-1。其中,调用
wait(&status)
等价于调用waitpid(-1,&status,0)
。 - 运行waitprob0.c
- 运行waitpid1.c
- 回收僵死子进程
- wait()函数的帮助文档
-
exec()函数族
extern char **environ; int execl(const char *path, const char *arg, ... /* (char *) NULL */); int execlp(const char *file, const char *arg, ... /* (char *) NULL */); int execle(const char *path, const char *arg, ... /*, (char *) NULL, char * const envp[] */); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execvpe(const char *file, char *const argv[], char *const envp[]);
-
L:参数传递为逐个列举方式:execl execle execlp
V:参数传递为构造指针数组方式: execv execve execvp
E:可传递新进程环境变量: execle execve
P:可执行文件查找方式为文件名: execlp execvp
教材学习中的问题和解决过程
- 问题1:fflush()清除缓冲区函数原理及其使用方法?
- 问题1解决方案:函数原型
int fflush(FILE *stream);``` 作用:为了确保不影响后面的数据读取。 如果fflush返回EOF,数据可能由于写错误已经丢失。
代码调试中的问题和解决过程
暂无。
代码托管
结对及互评
本周结对学习情况
- 20155321
- 结对学习内容
- 第8章 异常控制流
- 第10章 系统级I/O
- 缓冲区溢出漏洞实验
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 63/63 | 1/2 | 8/18 | |
第三周 | 31/94 | 1/3 | 18/36 | |
第四周 | 265/329 | 1/4 | 17/53 | |
第五周 | 106/435 | 2/6 | 18/71 | |
第六周 | 211/646 | 2/8 | 21/92 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:18小时
-
实际学习时间:21小时