操作系统第2次实验报告:创建进程
2020-04-03 13:47 Wangpj 阅读(692) 评论(0) 编辑 收藏 举报姓名:王丕杰
学号:201821121052
班级:计算1812
一、实验目的
熟练Linux创建进程fork操作。
二、实验内容
- 在服务器上用VIM编写一个程序:一个进程创建两个子进程。
- 查看进程树
- 查看进程相关信息
三、实验报告
1、编写程序
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。程序命名为 forktest.c
给出源代码:
1 #include<stdio.h> 2 #include<sys/types.h> 3 #include<unistd.h> 4 int main () 5 { 6 pid_t fpid; 7 for(int i=0;i<2;i++){ 8 fpid=fork(); 9 if(pid==0||pid==-1){ 10 break; 11 } 12 } 13 if(fpid==0){ 14 printf("Child proces: %d\n",getpid()); 15 } 16 else if(fpid==-1){ 17 printf("error\n"); 18 } 19 else{ 20 printf("Parent process: %d\n",getpid()); 21 } 22 sleep(200); 23 return 0; 24 }
2、打印进程树
编译程序并运行:
打印进程树:
3、解读进程相关信息
(1) ps -ef
相应字段解析:
UID:用户ID(此处为wangpijie)
PID:进程ID(此处为4173、4174、4175等)
PPID:该进程的父进程ID(例如子进程4174、4175对应其父进程4173)
C:该进程占用CPU的百分比(此处为0)
STIME:进程开始时间(此处为11:33)
TTY:登录进程终端机位置(此处为pts/1)
TIME:进程运行时间(此处为00:00:00)
CMD:运行该进程所下达的指令(此处为 ./forktest)
(2) ps -aux
相应字段解析:
USER:用户名(此处为wangpijie)
PID:进程ID(此处为4173、4174、4175等)
%CPU:CPU占比(0.0)
%MEN:内存占比(0.0)
VSZ:占用虚拟记忆体的大小
RSS:占用记忆体的大小
TTY:登录进程终端机位置(此处为pts/1)
STAT:进程状态(此处S表示中断,显示S+是因为包括子进程)
START:进程开始时间(此处为11:33)
TIME:进程运行时间(此处为0:00)
COMMAND:运行该进程所下达的指令(此处为 ./forktest)
4、通过该实验产生新的疑问及解答
疑问:实验过程中在运行程序后,执行pstree -p pid仍无法打印出进程树
解答:(1)需要打开两个终端窗口,一个运行程序,一个执行 pstree -p pid 打印进程树
(2)程序中sleep()挂起进程的时间太短,导致进程树无法打印,增加挂起进程的时间即可