试验六Linux进程编译案例.doc
文本预览下载声明
《嵌入式操作系统应用开发》
课程实验报告
班 级: ****************
学 号: *************
姓 名:**************
指导老师: ***************
成 绩:
实验六: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
显示全部