文档详情

试验六Linux进程编译案例.doc

发布:2017-06-15约6.34千字共12页下载文档
文本预览下载声明
《嵌入式操作系统应用开发》 课程实验报告 班 级: **************** 学 号: ************* 姓 名:************** 指导老师: *************** 成 绩: 实验六:Linux进程编程一、目的与任务 目的:了解掌握操作系统进程的特点与功能,学会借助Linux进程的功能函数进行编程。任务:利用C语言指令编写程序调用进程函数,完成相应功能。 二、内容、要求与安排方式 1、实验内容与要求: 1)通过简单程序编写了解掌握Linux进程编程基本概念、进程关系。 2)守护进程与多进程并发案例、守护进程的编写。 3)编程验证孤儿进程的产生与回收。 4)编程验证僵尸进程的产生与回收。 2、实验安排方式:采用1人1组,上机在inux系统下进行编程实验。 、”ch06.h”中: #include unistd.h #include stdio.h #include err_exit.h #include stdlib.h #include sys/wait.h #include signal.h #include termios.h #include sys/types.h 添加“err_exit.h”文件获取导致函数调用失败的原因; #include errno.h #include stdlib.h #define err_exit(MESSAGE) ( perror(MESSAGE), exit(1) ) 1-1应用程序创建进程的唯一方法是通过现有进程调用folk()函数; 注释:用folk创建的子进程基本上是父进程的克隆,所以他包含了父进程的许多特征; #include ch06.h int global = 5; int main(void) { pid_t pid; char *string = I am parent; int local = 10; printf( before fork--- ); if ((pid = fork()) 0) /* fork调用失败 */ err_exit(fork); if (pid == 0){ /* 子进程 */ string = I am child; printf(%s, my pid=%d: global=%d, local=%d\n, string, getpid(), global, local); global ++; } else { /* 父进程 */ printf(%s, my pid=%d: global=%d, local=%d\n , string, getpid(), global, local); local++; } printf(At join point, %s: global=%d, local=%d\n, string, global, local); exit(EXIT_SUCCESS); } 1-2用刚建立的子进程调用exec()执行一个新程序; #include ch06.h char *env_init[]={USER=unknow,PATH=/tmp,NULL}; char *path = /home/zkj/book/ch06/echoall; int main(void) { pid_t pid; if ((pid=vfork()) 0) err_exit (vfork error); else if (pid == 0){ /* 子进程 */ if (execle(path, echoall, arg1, ARG2, (char *)0, env_init) 0) err_exit(execle error); } else { if ((pid=vfork()) 0) err_exit(vfork error); else if (pid == 0){ /* 子进程 */ if (execlp(./echoall, ech
显示全部
相似文档