Linux进程管理编程(进程的创建).docVIP

  • 3
  • 0
  • 约5.26千字
  • 约 13页
  • 2017-01-30 发布于重庆
  • 举报
Linux进程管理编程(进程的创建)

实训1 Linux进程管理命令的使用 实训目标: 掌握Linux中ps命令使用方法。 掌握Linux中top命令使用方法。 实训内容: 使用ps命令查看进程。 使用top命令查看进程。 实训步骤: 使用ps命令查看进程。 不带参数的ps命令:# ps 带参数的ps命令:# ps aux 使用top命令查看进程。 a. 监视特定用户:$ top:输入此命令,按【Enter】键,查看执行结果。 u: 然后输入“u”按【Enter】键,再输入用户名,即可。 b. 终止指定的进程:$ top:输入此命令,按【Enter】键,查看执行结果。 k: 然后输入“k”按【Enter】键,再输入要结束的进 程ID号。 实训2 Linux进程管理编程(进程的创建) 实训目标: 掌握fork()系统调用的使用。 实训内容: 写出如下程序的执行结果,并画出该进程家族树。 /***fork()***/ #includestdio.h main() { fork(); /*父进程1创建子进程2*/ fork(); /*父进程返回后分别再创建各自的子进程3、4*/ fork(); /*父进程1、2、3、4返回后分别再创建各自的子进程5、6、7、8*/ putchar(‘A’); /*每个进程都要输出‘A’*/ putchar(‘\n’); /*输出‘A’后按【Enter】键换行*/ } 实训步骤: 新建并编辑fork3.c. 编译fork3.c。 [cathya@stu 桌面] $ gcc -o fork3 fork3.c 执行fork3,结果如下。 [cathya@stu 桌面] $ ./fork3 A A A A A A A A [cathya@stu 桌面] $ 查看该进程执行结果为八个“A”,说明有八个进程产生。其进程关系如图3—8所示。 图3—8 调用三次fork()的进程家族树 步骤2—4的执行结果 实训3 Linux进程管理编程(父子进程的同步) 实训目标: 掌握fork()系统调用的使用。 实训内容: 实现子进程先输出“B”然后父进程再输出“A”,源程序命名为synl.c。 实训步骤: 编写源文件synl.c为以下内容(执行内容如图1): #includestdio.h main() { int p1; while((p1=fork())==-1); if (p10) { wait(0); //父进程等待子进程终止 putchar(‘A’); Putchar(‘\n’); } else { putchar(‘B’); putchar(‘\n’); exit(0); //子进程向父进程发终止信号0 } } 编译(如图2)。 执行(如图2): [cathya@stu 桌面] $ ./synl B A [cathya@stu 桌面] $ 源程序编译连接并多次运行后的结果都是子进程先输出“B”父进程后输出“A”,说明父进程等待子进程的同步关系成立。 图1 图2 实训4 Linux进程管理编程(生产者消费者问题) 实训目标: 掌握Linux关于同步、互斥信号量的使用。 实训内容: 设父进程创建一个子进程作为生产者,创建两个子进程作为消费者,这三个子进程使用一个共享内存,如图3—9所示,该共享内存定义为具有五个变量的数组,每个变量表示一个缓冲区,缓冲区号为0~4.生产者进程依次往缓冲区0~4中写十个数据1~10,两个读进程依次从缓冲区0~4中轮流取出这10个数据。使用信号量实现进程读写缓冲区的同步和互斥。 分析: (1)需要创建三个子进程:生产者、消费者A、消费者B; (2)需要使用三个信号量:empty、full、mutex,分别表示缓冲区是否有空、是否有 数和

文档评论(0)

1亿VIP精品文档

相关文档