前些时候写过基于fork(),execvp()和wait()实现类linux下的bash——mybash,里面有着我关于fork(),execvp()和wait()的一点看法。 |
问题2:怎么对于僵死子进程,此时父进程已终止,子进程由谁回收,且父进程的父进程是谁,是其子进程的“爷爷”进程吗,回收父进程的是谁,是“爷爷”进程仍是init进程?html
测试1:测试父进程等待子进程并回收其java
#include<sys/types.h> #include<sys/wait.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h> void main() { int i=0; pid_t pid; printf("p_pid=%d\n",getppid()); pid=fork(); wait(NULL); if(pid==0){ //sleep(10); printf("cp_pid=%d\n",getppid()); } printf("this pid is %d\n",getpid()); exit(1); }
#include<sys/types.h> #include<sys/wait.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h> void main() { int i=0; pid_t pid; printf("p_pid=%d\n",getppid()); pid=fork(); //wait(NULL); if(pid==0){ sleep(10); printf("cp_pid=%d\n",getppid()); } printf("this pid is %d\n",getpid()); exit(1); }
运行截图:
linux
翻看到第八章后面发现了几个bash指令,其中之一就是ps指令(用于打印出当前系统中的进程(包括僵尸进程));经过ps aux|grep 1503
和ps aux|grep 50171
获得以下图,其中每行的最后一个字段表明command,即执行者是谁,这样就顺藤摸瓜获得了./Fork
的父进程是ID号为50171的由bash执行的进程,因此理所应当在父进程终止后有由bash回收,而对于ID号为1503的进程的执行者是/sbin/upstart
,这里的/sbin/upstart
就是在书中提到的专门回收进程的“init”进程,但并非全部进程的祖先,这里仍是回到ps指令获得的信息来看,这里是存在者名为init的祖先进程的,即ID号为1的进程,但此时的这个祖先进程不在执行全部的僵死进程的回收了,而将此功能赋予给了/sbin/upstart
创造出来的ID号为1503的进程,由她来收集僵死进程。git
问题1:statistics运行时,总会出现xargs cat:因信号13而终止的错误,我尝试把.c改为.java,就没有那样的错误了,我百度但没有关于信号13的解释,我决定重读statistics脚本;
安全
问题1的解决:bash
语句 | 含义 |
---|---|
find . -name "*.c" | 找到当前目录下全部.c文件 |
xargs cat | 这里的xargs至关于一个链接管道,将find找到的文件输送到cat指令下,并执行 |
grep -v $ | grep -v指的是捕捉非-v后面的其余内容,$指的是空行 |
wc -l | 统计文档里的行数 |
find . -name "*.c"
检索了一遍全部.c文件,发现有个命名是这样的mybash (复件).c
文件名存在一个空格,删除该文件后以及其余文件名有空格的文件后,从新运行statistics脚本,结果就正常了。
结对队友20155303函数
这周有点感慨,就是linux其实提供了不少指令供咱们学习linux,与其只是去简单的在C语言上作表面功夫,不如深刻学习一下linux里的bash指令,每每会有事半功倍的效果。学习
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 15篇 | 400小时 | |
第一周 | 177/177 | 1/1 | 10/10 | |
第三周 | 308/485 | 2/2 | 12/22 | |
第五周 | 277/762 | 2/4 | 10/32 | |
第六周 | 567/1329 | 1/5 | 15/47 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。测试
参考:软件工程软件的估计为何这么难,软件工程 估计方法ui
计划学习时间:XX小时
实际学习时间:XX小时
改进状况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)