实验二 -Linux 进程、线程及编程实验二Linux 进程、线程及编程实验一、实验目的1、通过编写一个完整的守护进程,掌握守护进程编写和调试的方法2、进一步熟悉如何编写多进程程序二、实验环境硬件:PC 机一台, JXARM9 -2410 教学实验平台
软件:Windows98/XP/2000 系统,虚拟机环境下的 Linux 系统
三、预备知识1、fork() fork() 函数用于从已存在的进程中创建一个新进程
新进程称为子进程, 而原进程称为父进程
使用 fork() 函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等, 而子进程所独有的只有它的进程号、资源使用和计时器等2、exit() 和_exit()的区别_exit() 函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间, 并销毁其在内核中的各种数据结构;exit() 函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序
exit()函数在调用exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是图中的 " 清理 I/O 缓冲 " 一项
3、wait() 和 waitpid() wait() 函数是用于使父进程 (也就是调用 wait()的进程)阻塞,直到一个子进程结束或者该进程接到了一个指定的信号为止
如果该父进程没有子进程或者他的子进程已经结束,则wait() 就会立即返回
四、实验内容在该实验中,读者首先创建一个子进程1(守护进程),然后在该子进程中新建一个子进程2,该子进程 2 暂停 10s,然后自动退出,并由子进程 1 收集子线程退出的消息
在这里,子进程1和子进程2 的消息都在系统日志文件(例如