Linux课程设计进程控制.docVIP

  • 14
  • 0
  • 约6.93千字
  • 约 15页
  • 2018-01-08 发布于江西
  • 举报
Linux课程设计进程控制.doc

课 程 设 计 报 告 课程名称 系统课程设计 指导教师 起止日期2014-03-01 至 201-06-13 实验项目 实验二 进程控制 学 院 信息与通信工程 专 业 电子信息工程 学生姓名 班级/学号 成 绩 指导老师签字 概述 课程设计的目的 本实验的目的是掌握进程的概念,理解进程的创建、执行、等待、终止的过程。熟悉有关进程控制的命令和系统调用,理解Shell的工作原理 课程设计的内容 进程控制命令 使用进程控制命令pskill监视和控制进程的活动 用forkwait,exec系统调用实现进程控制 编写一个简单的shell 设计原理 进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。 图 实验步骤 操作 进程控制命令(在此终端窗口的操作截图见图1) 执行ps命令: PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收在后台运行一个进程yes /dev/null 用ps -f命令观察yes进程的pid和ppid用ps u命令观察yes进程的状态。根据命令名搜索特定的进程ps -ef | grep yes: 用kill命令杀掉yes进程: 图1 进程控制系统调用(此部分操作截图见图2、3) 利用fork()和wait()来控制进程的执行:编写程序fork_wait.c 编译:gcc -o fork_wait fork_wait.c 运行:./fork_wait 修改此程序,使父进程先睡眠一段时间后收集(wait)子进程。在后台运行程序,在子进程已终止而父进程尚未收集它时,用ps 观察子进程的僵尸状态。sleep(40)睡眠40秒。用ps u可以看见一个Z 利用exec()置换程序的执行代码文件编写程序exec_test.c,使子进程执行另一个程序,如echo。 修改程序exec_test.c,使子进程执行一个可持续运行一段时间命令,运行程序用ps -f 观察子程执行的命令名。 sleep 40。即:execl(/bin/sleep, sleep, 40, ); 图 图 Mini Shell编程编写一个简单的shell程序—Mini Shell,它接收输入的命令并解释执行Linux的命令分为内部命令和外部命令。内部命令由Shell程序自己实现,如cd、pwd等,外部命令是位于程序。Mini Shell只实现两个内部命令:pwd和quit(退出),它可执行所有不带参数的外部命令date、who、cal、ls等。选做)Mini Shell程序,使它可执行只带一个命令选项或参数的命令行,如ls -a、cat file、echo hello等。 用strtok函数将读入的命令行cmd以空格为分隔符拆为两个字符串cmd1和cmd2: cmd1=strtok(cmd, ); cmd2=strtok(NULL, ); 此时的cmd1即为命令名,cmd2即为命令的选项或参数。判断cmd2,若为空则执行系统调用execlp(cmd1, cmd1, NULL),否则执行execlp(cmd1, cmd1, cmd2, NULL) (选做)Mini Shell程序,可做任何你认为可以改进的修改,如界面、提示、处理输入错误、增强功能等。 图图 图结论与评价 此部分操作较为简单,主要在帮助理解进程的概念和进程的PID,掌握基本的进程操作如ps kill和后台运行一个程序等。通过这一部分的操作我了解到进程是什么,进程和程序有什么不一样,子进程和父进程之间的关系。 进程控制系统调用 fork_wait是本次实验的第一个编程题,通过已经给好的代码我了解到了几个在Linux中常用的函数,如sleep(), getpid(), fork(), wait() 等,我更加清晰地在修改程序的过程中理解了子进程和父进程的关系,更重要的是我学会了通过简单函数来对进程进行控制。观察到了特殊的僵尸进程:僵尸进程(zombie)是指已终止运行,但尚未被清除的进程。 exec_test是本次试验的第二个编程题,这次学习到的函数是execl(),第一参数path字符指针所指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参数用空指针NULL作结束。用exec()置换程序的执行代码文件 fork_wai

文档评论(0)

1亿VIP精品文档

相关文档