实验报告(学生打印后提交)实验名称:shell编程基础实验时间:2013年4月26日实验人员:实验目的:1
学习使用Linux的系统调用,对进程进行管理和完成进程之间的通信(本实验中分别是用信号和管道进行进程间通信);2
理解并发程序中的同步问题;3
熟悉使用Linux下的软件开发工具gcc;4
熟练使用man帮助手册实验环境:linux实验步骤:1
把源文件(程序)拷入Linux系统的一个目录中2
阅读关于fork、exec、wait、exit、pipe系统调用的man帮助手册3
编译程序fork
c并运行,观察结果,分析程序
试编辑程序pipe
c运行,观察结果,分析程序
(程序要求及提示见pipe
阅读关于函数sigaction、tcsetpgrp和setpgid的man帮助手册
编译程序signal
c并运行,观察结果,分析程序
编译程序process
c并运行,观察结果,分析程序
完成实验报告
实验陈述:1、基础知识:什么是系统调用:系统调用是Linux操作系统核心提供给用户程序使用的操作系统服务,系统调用主要提供用户程序对文件进行读写,进程的创建,删除和控制以及数据的输入/输出等
简述fork调用:创建一个新的进程,成为原先进程的子进程,同时子进程拥有和父进程相同代码段,通过fork的返回值转向不同的代码分支的一种函数调用
如何实现进程间的通信:通过管道允许一条命令的标准输出作为一条命令的标准输入同一个系统上的两个相关的进程可实现相互之间的单向通信(典型情形是父子进程
UNIX进程通信方式还有信号,消息,共享存储区和信号量
如何实现进程间的连接:信号允许一个进程在某一事件发生时与另一个进程(接收者进程)通信,该进程把事件对应的消息传递给接收者进程,接收者进程收到一个信号时,会采取某些相应的动作,这样便实现了进程间的通信