操作系统第2次实验报告:创建进程
- 姓名 :万大明
- 学号 :201821121058
- 班级 :计算1812
1. 编写程序
在服务器上用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\n",getpid());
}
else{
fpid2=fork();
if(fpid2==0){
printf("Child process,my process is %d\n",getpid());
}
else
printf("Parent process,my process is %d\n",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可以是其他
数值,代表时间限制。
浙公网安备 33010602011771号