- 姓名:白晓
- 学号:201821121035
- 班级:计算1812
1. 编写程序
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:
#include<sys/types.h> #include<unistd.h> #include<stdio.h> int main() { pid_t fpid; int i; for(i=0;i<2;i++) { fpid=fork(); if(fpid==0 || fpid<0){ break; } } if(fpid<0) printf("error in fork!"); else if(fpid==0){ printf("Child process,my process id is %d\n",getpid()); } else{ printf("Parent process,my process id is %d\n",getpid()); } sleep(100); return 0; }
后台运行结果:
2. 打印进程树
打印1所创建的进程树结构,给出带有自己名字的截图。
3. 解读进程相关信息
(1) ps -ef
使用ps -ef
给出所创建进程的信息,并分析每个字段的含义。
UID PID PPID C STIME TTY TIME CMD baixiao 1136 19737 0 20:53 pts/1 00:00:00 ./shiyaner baixiao 1137 1136 0 20:53 pts/1 00:00:00 ./shiyaner baixiao 1138 1136 0 20:53 pts/1 00:00:00 ./shiyaner
UID:用户ID为baixiao
PID:该进程的ID为:1136、1137、1138
PPID:进程1136的父进程ID为19737,进程1137、1138的父进程ID为1136
C:进程cpu占有率为0
STIME:进程启动时间为20:53
TTY:该进程登录终端
TIME:进程执行时间为0
CMD:指下达的指令
(2) ps -aux
使用ps -aux
给出所创建进程的信息,并分析每个字段的含义。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND baixiao 1136 0.0 0.0 4508 788 pts/1 S 20:53 0:00 ./shiyaner baixiao 1137 0.0 0.0 4508 68 pts/1 S 20:53 0:00 ./shiyaner baixiao 1138 0.0 0.0 4508 68 pts/1 S 20:53 0:00 ./shiyaner
USER:用户为baixioa
PID:进程的ID为:1136、1137、1138
%CPU:进程CPU占有率为0
%MEM:进程使用的物理内存和总内存的百分比为0
VSZ:占用虚拟内存量为4508KB
RSS:进程1136占用固定内存量为788KB,进程1137与1138占用固定内存量为68KB
TTY:该进程登录终端
STAT:该进程的状态为S,表示可中断的睡眠状态
START:进程被触发的时间为20:53
TIME:进程执行时间为0
CMD:指下达的指令
4. 通过该实验产生新的疑问及解答
Q:打开两个终端,另一个终端使用ps -ef无法给出信息
A:需要先运行另一个终端的父进程,在运行ps -ef以及ps -aux
Q:STAT的其他状态
A: