微笑的萌新 2019-04-19 14:32 采纳率: 100%
浏览 634
已结题

有关进程控制系统调用使用范例的问题

实例1:
/* process_state.c /
#include
#include
#include
#include
int main()__
{
int pid;
if(!(pid = fork())) /
子进程始执行*/
{
int i,j,k;
printf("C: This is son, my pid is: %d, my father's pid is %d \n", getpid(), getppid());
printf("C: I'm so busy...\n");
for(i=0; i<10000; i++)
for(j=0; j<10000; j++)
for(k=0; k<50; k++);
printf("C: Now, Let me have a rest. \n");
sleep(15);
printf("C: I want to exit. \n");
exit(0);
}
else /* 父进程执行*/
{
printf("F: This is father, my pid is: %d\n", getpid());
sleep(50);
pid=wait(NULL);
printf("F: My son %d terminated.\n",pid);
sleep(10);
printf("F: Ok, I'm almost finished.\n");

}

}
(1) 认真阅读上述程序,了解程序的基本功能,并仔细思考父进程创建子进程后将从哪里开始继续运行;子进程被创建后,首次得到CPU后将从哪里开始运行。
(2) 打开一个终端窗口,编辑、编译并运行上述程序,观察程序运行的结果是否如你所料。思考,子进程首次得到CPU后从哪个位置开始执行,这到底是通过什么做到的。
(3) 观察父子进程是顺序执行,还是并发执行。
(4) 请再打开另一个终端窗口,用top观察系统中进程的情况,观察所有进程是按什么项目从大到小的顺序依次显示的。
(5) 将top的进程显示顺序按PID从新排序,并在显示界面中只保留USER 、PID、S、COMMAND四个项目。
(6) 在前一个终端窗口中再次运行process_state程序,同时仔细观察top终端窗口显示的内容,了解该程序对应的父子进程在它们的生命周期中的状态经历了哪些变化。

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-04-19 15:07
    关注

    这个又不是问题,只是让你做实验,验证下书本上介绍的原理,你安装一个虚拟机,里面跑一个linux,然后按照123456做一下就可以了。

    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)