操作系统第2次实验报告:创建进程
- 姓名:毛琳淇
- 学号:201821121007
- 班级:计算1811
1. 编写程序
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:
#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid;
int i;
for(i-0;i<2;i++){
pid=fork();
if(pid<0||pid==0){
break;
}
}
if(pid<0){
printf("error in fork\n");
}
else if(pid==0){
printf("Child process,my process id is %d\n",getpid());
}
else{
printf("Parent process,my process id is %d\n",getpid());
}
sleep(1000);
return 0;
}
2. 打印进程树
3. 解读进程相关信息
(1) ps -ef
UID:用户ID
PID:进程ID
PPID:父进程ID
C:进程占用CPU的百分比
STIME:进程启动到现在的时间
TTY:终端的次要装置号码
TIME:CPU运行时间
CMD:命令的名字和参数
(2) ps -aux
USER:用户ID ,进程拥有者
PID:此进程ID
%CPU:进程占用CPU的使用率
%MEM:进程占用内存的百分比
VSZ:占用虚拟内存量
RSS:占用固定内存量
TTY:进程的登录终端位置
STAT:进程的状态,现在为T表示暂停或跟踪状态
START:进程启动时的时间
TIME:CPU运行时间
COMMAND:命令的名字和参数
4. 通过该实验产生新的疑问及解答
(1)第一次运行只能启动一个子进程。
答:然后发现是循环部分出了问题。
(2)无法通过pstree打印进程树。
答:延长sleep函数中的时间后解决了。