操作系统第2次实验报告:创建进程 1. 编写程序 2. 打印进程树 3. 解读进程相关信息 4. 通过该实验产生新的疑问及解答
- 姓名 :万大明
- 学号 :201821121058
- 班级 :计算1812
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main(){ pid_t fpid1,fpid2; fpid1=fork(); if(fpid1<0){ printf("error in fork"); } else if(fpid1==0){ printf("Child process,my process is %d ",getpid()); } else{ fpid2=fork(); if(fpid2==0){ printf("Child process,my process is %d ",getpid()); } else printf("Parent process,my process is %d ",getpid()); } sleep(1000); return 0; }
2. 打印进程树
打印1所创建的进程树结构,给出带有自己名字的截图。
3. 解读进程相关信息
(1) ps -ef
UID: 即图中第一行列wandamin+”,该进程的执行者ID
PID: 这个进程的ID,为上述第二列的数字
PPID: 进程的父进程ID,例如上述表现为第三列23720是第二列1309的父进程ID
C: CPU所使用的资源占用比,上述表现为第四列的“0”
STIME: 进程的启动时间
TTY: 终端的次要装置码,上述为“pts/7”
TIME: 进程执行时间,上述为“00:00:00”
CMD: 所执行的命令,上述为“grep "test" ”,对应为“./test”
(2) ps -aux
USER: 进程拥有者
PID: 进程的ID号,上述第二列数字
%CPU: 占用的 CPU 使用率,为上述第三列
%MEM: 占用的内存使用率,上诉第四列,此时为0.0
VSZ: 占用的虚拟内存大小,上诉第五列
RSS: 占用的内存大小,上诉第六列
TTY: 终端的次要装置号码,为“pts/7”
STAT: 该进程的状态,S表示中断
START: 进程开始时间,上诉为“12:16”
TIME:进程执行的时间,为“0:00”
COMMAND:所执行的指令,上述为“grep "test" ”,对应为“./test”
4. 通过该实验产生新的疑问及解答
1、vim命令具体操作方法:
进入vim命令:vim 文件名.c(例如:vim test.c)注:c代表C语言代码
vim操作:先按“ESC”,再输入“:”,输入一下命令即可执行对应操作。
2、无法打印进程树问题:
解决方法:在代码中加入代码段"sleep(1000)",其中1000可以是其他
数值,代表时间限制。