《操作系统原理》实验指导书
- 格式:doc
- 大小:79.50 KB
- 文档页数:13
天津理工大学华信软件学院 《操作系统》实验教学指导书2.2
课程代码: 1460350 课程名称: 操作系统 / Operating System 开课院(系)、实验室:华信软件学院C408机房 适用专业: 软件工程专业 实验指导书名称: 《操作系统实验教程(Linux版)》第八章 指导教师: 张一鸣
实验二 进程的建立与调度(2.2 进程的调度) 1. 实验目的 (1) 理解并比较处理机调度的常用策略。 (2) 重点掌握优先权调度和时间片轮转两种调度算法的设计与实现。 (3) 按优先权调度算法设计并实现一个处理机调度的程序。
2. 实验内容 本实验中,根据进程状态的转换图模拟多个进程在一个处理机上进行调度。本实验有两个题目,可任选其一。 (1) 设计一个按动态优先权调度算法实现处理机调度的程序。 (2) 设计一个按时间片轮转调度算法实现处理机调度的程序。
3. 准备知识 (1) 理解操作系统中处理机调度的概念和调度算法。 (2) 学习Linux下进程控制以及进程间通信的知识。
4. 实验原理 时间片轮转调度算法和优先权调度算法本质上是一直的,只是在调度时选择的策略不一样而已,故程序流程图是一致的,所以在本教程中仅给出一个流程图即可。具体算法流程图如1所示。 4.1. 时间片轮转调度算法 当系统按时间片轮转算法调度进程时,将所有的就绪进程按照一定的原则(如先来先服务原则)排列,形成一个就绪队列。每次调度为队首进程分配CPU资源,令其执行一个时间片,该时间片的大小从几ms到几百ms。当时间片用完时,由计时器发出中断信号,通知系统剥夺当前运行进程的CPU使用权,并将此进程送入就绪队列的末尾,等待下一次执行;然后,把处理机分配给就绪队列中新的队首进程,执行重复操作。在进程运行过程中,如果时间片未用完而等待时间发生,则该进程进入等待队列,系统将CPU重新分配给就绪队列的队首进程,一旦时间发生后,等待队列的队首进程进入就绪队列末尾。这样就可以保证就绪队列中的所有进程,在可接受的等待时间内,均能获得处理机并调度执行。 时间片轮转调度算法的进程状态转换图,如图2所示。
操作系统实验指导书实验概述本次操作系统实验是为了让学生通过实践了解操作系统的基本概念,原理和使用。
通过完成实验,学生将了解操作系统内核,进程调度,文件系统和输入输出等关键组成部分。
实验环境实验要求使用 Linux 操作系统,可以选择任意一种 Linux 发行版。
可以在物理机上安装 Linux,也可以使用虚拟机软件(如 VirtualBox)来运行 Linux 虚拟机。
实验准备在进行实验之前,需要完成以下准备工作:1.安装 Linux 操作系统(如 Ubuntu、Fedora 等)或虚拟机软件(如VirtualBox)。
2.熟悉 Linux 基本命令和操作,包括文件操作、进程管理等。
实验内容本次操作系统实验分为以下几个部分:1. 实验一:进程管理本部分实验要求学生了解进程管理的基本概念和原理,掌握进程创建、终止和状态转换等操作。
学生需要完成以下任务:•编写一个简单的 C 程序,实现进程的创建、终止和状态转换功能。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析进程的状态转换过程。
2. 实验二:进程调度本部分实验要求学生了解进程调度算法的原理和实现方法,掌握优先级调度、轮转调度和最短作业优先调度等算法。
学生需要完成以下任务:•编写一个简单的 C 程序,模拟进程调度算法的执行过程。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析不同调度算法对进程执行顺序的影响。
3. 实验三:文件系统本部分实验要求学生了解文件系统的基本概念和实现原理,掌握文件的创建、读写和删除等操作。
学生需要完成以下任务:•编写一个简单的 C 程序,实现文件的创建、读写和删除功能。
•使用 Linux 命令行工具编译、运行和调试 C 程序。
•观察和分析文件系统的存储结构和操作过程。
4. 实验四:输入输出本部分实验要求学生了解操作系统的输入输出机制和设备驱动程序的原理和实现方法,掌握文件读写、设备驱动和错误处理等操作。
《操作系统原理课程设计B》实验指导书华北电力大学计算机学院操作系统课程组2006-6-20一、单处理器系统的进程调度1.实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。
当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。
本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。
2.实验内容与要求(1)设计多个进程并发执行的模拟调度程序,每个程序由一个PCB表示。
(2)模拟调度程序可任选两种调度算法之一实现。
(3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。
3.实验说明本实验有两个题,学生可选择其中的一题做实验。
第一题:设计一个按优先数调度算法实现处理器调度的程序。
(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:P1,P2,P3,P4,P5。
指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。
要求运行时间——假设进程需要运行的单位时间数。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
状态——可假设有两种状态,“就绪”状态和“结束”状态。
五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。
用一单元指出队首进程,用指针指出队列的连接情况。
例:队首标志K2K3K4K5PCB1 PCB2 PCB3 PCB4 PCB5(4) 处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数-1要求运行时间-1来模拟进程的一次运行。
操作系统实验指导书及代码《操作系统》实验指导书目录实验环境 ................................................. 1 实验报告要求 ............................................. 1 实验一进程控制与处理机调度综合实验 ..................... 2 实验二存储管理与页面置换算法 (7)实验环境本课程实验硬件环境为PⅢ以上的处理器,带有显示器。
操作系统使用windows98以上操作系统,基本编程环境为Turbo C。
实验报告要求实验报告应包含以下内容:(1)实验题目(2)实验目的(3)实验环境(4)算法描述(5)程序源代码(6)出现的问题(7)对问题的解决方案(8)实验结果与结果分析(9)实验思考(学生对本次实验的收获的总结)实验一进程控制与处理机调度综合实验一、实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构,进程的创建与撤消,进程的组织及进程的状态及其转换,掌握进程调度策略。
二、实验学时4学时三、实验内容本实验为单机模拟进程调度算法,在程序设计时不需真正地建立线程或者进程。
实验模拟创建若干进程(人为输入或随机数产生),选择一种或几种单处理机的进程调度算法,如FCFS(先来先服务),SPF(短进程优先),RR(时间片轮转法),优先级算法等,模拟进行进程调度。
每进行一次调度,都打印一次运行进程、就绪队列、以及各个进程的PCB,并能在进程完成后及时撤消该进程。
四、算法描述1 进程及进程的运行状态进程是现代计算机中的基本要素,是系统分配资源和调度的基本单位。
进程与程序不同,进程是系统中动态的实体,有它的创建、运行和撤销的过程。
PCB块是系统感知进程存在的唯一实体。
进程的创建必须首先创建进程的PCB块,而进程的运行也伴随着PCB块的变化,进城撤销也要同时撤销它的PCB块。
所以本实验的任务就是通过模拟调度进程的PCB块来调度进程。
天津理工大学华信软件学院《操作系统》实验教学指导书2.1课程代码:1460350课程名称:操作系统/ Operating System开课院(系)、实验室:华信软件学院C408机房适用专业:软件工程专业实验指导书名称:《操作系统实验教程(Linux版)》第七章指导教师:张一鸣实验二进程的建立与调度(2.1 进程的建立与控制)1. 实验目的(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步理解并发的概念,明确并发与并行的异同。
(3)分析进程竞争资源现象,学习解决进程互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
2. 实验内容(1)进程的创建编写一段源程序,使用系统调用fork()创建一个子进程,当此程序运行时,在系统中有一个父进程和一个子进程活动。
让每一个进程在屏幕上显示一个字符串;父进程显示字符“I am the parent”并显示其进程id和子进程的id;子进程显示字符串“I am the child”,并显示其进程id。
(2)进程的控制进程并发图,如图1所示。
设有7个进程,其执行次序如图1所示。
在Linux下使用C语言利用系统调用命令fork(),execl(),exit(),wait()进行藐视,调用execl()函数的时候,模拟调用/bin/echo下的echo命令,向控制台输出一句可鉴别是哪个进程的字符串即可。
3. 准备知识(1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。
(2)阅读Linux的fork.c源文件,分析进程的创建过程。
4. 实验原理Linux是一个多用户多任务的操作系统,即在同一个时间内,可以有多个进程同时执行。
常用的单CPU单核计算机在同一个时间片内只能执行一条命令,Linux使用了一种称为“进程调度(process scheduling)”的手段来实现。
首先,为每个进程分配一定的运行时间片,该时间片通常以毫秒为单位,然后依照某种调度算法,从就绪队列中选择一个进程投入运行,其他的进程暂时等待。
操作系统实验指导书(linux版)《操作系统》实验指导书实验学时:16适用于专业:计算机科学与技术实验一:进程和线程的创建另外写下一个应用程序,命名为an_ch2_1a。
这个程序建立一个子进程,继续执行an_ch2_1b。
这个程序不断地输入如下行:观察程序运行的结果,并对你看到的现象进行解释。
2。
在linux环境下撰写一个控制器应用程序,程序中存有一个共享资源的整型变量shared_var,初始值为0;建立一个线程并使其立即与主线程mammalian继续执行。
新创建的线程与主线程均不断地循环,并输入shared_var的值。
主线程在循环中不断地对shared_var展开提1操作方式,即为每次循环shared_var被提1;而新创建的线程则不断地对shared_var展开减至1操作方式,即为每次循环shared_var被减至1。
观测程序运行的结果,并对你看见的现象展开表述。
3。
提交源代码以及实验报告。
实验二:进程和线程同步和不相容1。
生产者消费者问题(信号量)参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。
一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。
3个消费者不断地从缓冲中读取一个字符并输出。
为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。
附加的实验:在上面实验的基础上同时实现部分消费者存有选择地消费某些产品。
比如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则并无选择地消费任何产品。
消费者必须消费的产品没时,消费者进程被堵塞。
特别注意缓冲器的管理。
2。
用线程同时实现睡的理发师问题,(同步不相容方式使用信号量或mutex方式均可)理发师问题的叙述:一个理发店接待室存有n张椅子,工作室存有1张椅子;没顾客时,理发师睡;第一个顾客走进时,必须将理发师唤起;顾客来时如果除了空座的话,他就趴在一个座位上等候;如果顾客来时没空座位了,他就返回,不打扫卫生了;当理发师处置回去所有顾客,而又没崭新顾客来时,他又已经开始睡。
操作系统实验指导书(达人)指导前言操作系统是计算机科学中的一个基础课程,对于学生来说,实践操作系统理论知识是非常重要的。
本指导书旨在帮助读者掌握操作系统实验的基本方法和技巧,以及解决常见问题和错误。
实验一:操作系统基本命令行操作实验内容1.学习操作系统命令行操作的基础知识和技能。
2.使用命令行工具来浏览和管理文件系统。
3.学习启动和关闭系统的标准过程。
实验步骤1.打开计算机并登录系统。
2.打开命令行工具,在终端界面输入命令。
3.浏览文件系统,执行基本命令操作,如cd、ls、mkdir、rmdir、rm等。
4.截图并保存操作记录。
实验注意事项1.在执行命令时,注意区分大小写。
2.在操作文件系统时,一定要注意文件和文件夹的路径,以及当前所在目录。
3.在删除文件和文件夹时,一定要确认删除操作,避免误操作造成数据损失。
4.在保存操作记录时,一定要记录每一步操作,便于后续分析和评估。
实验二:系统调用基础实验内容1.学习操作系统系统调用的基础知识和技能。
2.使用C语言编写简单的程序,调用系统函数。
实验步骤1.打开计算机并登录系统。
2.打开C语言IDE,编写一个简单的程序,其中包括调用系统函数的部分。
3.编译、链接程序,生成可执行文件。
4.执行可执行文件,观察程序的运行过程,检查结果是否正确。
5.截图并保存操作记录。
实验注意事项1.在编写程序时,一定要认真阅读系统函数的文档,理解其功能和参数。
2.在编译、链接程序时,一定要注意编译选项和链接顺序。
3.在执行程序时,一定要注意参数使用和结果输出,避免产生错误。
4.在保存操作记录时,一定要记录每一步操作,便于后续分析和评估。
实验三:进程管理实验内容1.学习操作系统进程管理的基础知识和技能。
2.使用C语言编写简单的程序,模拟进程的创建和执行。
实验步骤1.打开计算机并登录系统。
2.打开C语言IDE,编写一个简单的程序,其中包括进程的创建和执行代码。
3.编译、链接程序,生成可执行文件。
目录1进程创建模拟实现 (6)1.1实验类型 (6)1.2实验目的 (6)1.3实验描述 (6)1.4实验内容 (6)1.5实验要求 (6)1.6测试要求 (6)1.7相关知识 (7)1.8实验设备 (9)1.9实验指导 (9)1.10实验成绩评定 (9)1.11实验报告 (9)1.12实验思考 (9)2P、V原语的模拟实现 (10)2.1实验类型 (10)2.2实验目的 (10)2.3实验描述 (10)2.4实验内容 (10)2.5实验要求 (10)2.6测试要求 (10)2.7相关知识 (11)2.8实验设备 (11)2.9实验指导 (11)2.10实验成绩评定 (12)2.11实验报告 (12)2.12实验思考 (12)3进程撤销模拟实现 (13)3.1实验类型 (13)3.2实验目的 (13)3.3实验描述 (13)3.4实验内容 (13)3.5实验要求 (13)3.6测试要求 (14)3.7相关知识 (14)3.8实验设备 (15)3.9实验成绩评定 (15)3.10实验报告 (16)3.11实验思考 (16)4FCFS进程调度模拟实现 (17)4.2实验目的 (17)4.3实验描述 (17)4.4实验内容 (17)4.5实验要求 (17)4.6测试要求 (18)4.7相关知识 (18)4.8实验设备 (18)4.9实验成绩评定 (19)4.10实验报告 (19)4.11实验思考 (19)5银行家算法实现 (20)5.1实验类型 (20)5.2实验目的 (20)5.3实验描述 (20)5.4实验内容 (20)5.5实验要求 (20)5.6测试要求 (21)5.7相关知识 (21)5.8实验设备 (22)5.9实验成绩评定 (22)5.10实验报告 (22)5.11实验思考 (22)6改进型CLOCK页面置换算法实现 (23)6.1实验类型 (23)6.2实验目的 (23)6.3实验描述 (23)6.4实验内容 (23)6.5实验要求 (23)6.6测试要求 (24)6.7相关知识 (24)6.8实验设备 (24)6.9实验成绩评定 (25)6.10实验报告 (25)6.11实验思考 (25)7SCAN磁盘调度模拟实现 (26)7.1实验类型 (26)7.2实验目的 (26)7.3实验描述 (26)7.4实验内容 (26)7.5实验要求 (26)7.6测试要求 (27)7.8实验设备 (27)7.9实验成绩评定 (27)7.10实验报告 (27)7.11实验思考 (27)8基于时间片的高优先级调度模拟实现 (29)8.1实验类型 (29)8.2实验目的 (29)8.3实验描述 (29)8.4实验内容 (29)8.5实验要求 (29)8.6测试要求 (30)8.7相关知识 (30)8.8实验设备 (31)8.9实验成绩评定 (31)8.10实验报告 (31)8.11实验思考 (31)9连续动态内存管理模拟实现 (32)9.1实验类型 (32)9.2实验目的 (32)9.3实验描述 (32)9.4实验内容 (32)9.5实验要求 (32)9.6测试要求 (33)9.7相关知识 (33)9.8实验设备 (34)9.9实验成绩评定 (34)9.10实验报告 (34)9.11实验思考 (34)10EXE文件装载实现 (35)10.1实验类型 (35)10.2实验目的 (35)10.3实验描述 (35)10.4实验内容 (35)10.5实验要求 (35)10.6测试要求 (35)10.7相关知识 (36)10.8实验设备 (37)10.9实验成绩评定 (37)10.10实验报告 (37)10.11实验思考 (37)11附录: (38)11.2实验二代码: (43)11.3BASIC.H文件 (48)1进程创建模拟实现1.1 实验类型验证型(2学时)。
1 《操作系统原理》实验指导书 罗琼 广州大学物理与电子工程学院 2
1、Linux环境下基本命令的使用 2、进程管理实验 3、命令解释程序的实现 3
1、 实验一 Linux环境下基本命令的使用 一、实验目的: (1)掌握Shell命令在Unix或Linux操作系统中的作用。 (2)理解Shell命令的解释和运行机制。 (3)掌握Unix或Linux系统环境下的常用的Shell基本操作命令。
二、 实验内容: (1) 查看系统的命令提示符,确定系统使用的Shell程序类型,列出Linux系统常见的Shell种类。 (2) 查看当前登录在系统中的用户列表、系统中的用户总数和系统启动时间。 (3) 查看当前的日期和时间。 (4) 显示当前目录,改变到用户主目录并列出当前目录的内容。 (5) 在当前目录下,创建名为 “自己姓名(用自己学号代替)”的新目录。在所创建的目录下创建名为“newfile”的新文件。 (6) 在屏幕上显示文件newfile的内容。 (7) 删除“自己姓名”中的newfile文件。 (8) 当前目录的目录“自己姓名”。 (9) 列出所有文件。
三、 实验步骤: 1、登录和退出 <1> 登录服务器系统: root (实际的用户名自己设置)。 <2> 在login:后输入用户帐号(第一次进入输入 root): 密码:未知 <3> 登录后,输入passwd命令来修改密码。根据提示输入当前密码,再输入两次新的密码。 <4> 输入logout命令或exit命令退出系统。
2、 获取帮助信息 命令man提供了系统操作命令的在线帮助。例如,输入man passwd 可以获取命令passwd的帮助说明;输入man open 可以获取open 函数的帮助说明。按空格键,翻页浏览。按<:>,再按q退出帮助。
3、 基本操作命令
<1>pwd:确定你当前的工作目录 <2> ls -al:显示当前工作目录的内容 <3> mkdir:建立一个子目录 <4> cd:转换目录 4
<5> cat或more:查看文件内容 <6> cp:复制文件 <7> rm -i:删除文件 <8> mv:重命名文件 <9> find:查找文件 <10> vi编辑命令新文件 <11> who查看当前登录在系统中的用户列表、系统中的用户总数和系统启动时间。 各个命令的具体使用方法,可以用man命令查看。
4、 vi编辑器 vi编辑器是一个小巧但功能强大的程序。vi编辑器有三种不同的模式: 插入模式——这个模式是通过在命令模式按下“i”键进入的。 命令模式——这是用户输入单键命令的模式。在其他模式中按下ESC键就可以进入命令模式。 常见的执行删除操作的命令有: dd 删除整个行 #dd 按照输入的数字(#),从当前行删除几行 D 删除光标位置后面全部内容 dw 删除光标所在位置的单词
冒号模式——从命令模式输入一个冒号(:)就可以进入这个模式。常见的冒号模式命令有: :wq 保存且退出编辑器 :w 保存但不退出 :q 退出且不保存 :q! 强行退出vi,不保存。 :help 获取帮助 1) 在系统提示符($)下输入命令vi和想要编辑(建立)的文件名 vi test.c 2) 按键I进入插入模式。屏幕上看不到字符i,屏幕下方出现--INSERT--字样。 3) 输入你的程序:
/********************************************************************* #include
void my_print1(char *); void my_print2(char *);
main () { char string[] = “hello world”; my_print1 (string); my_print2 (string); 5
} void my_print1(char *string) { printf(“The string is %s\n”, string); }
void my_print2(char *string) { char *string2; int size, i; size = strlen (string); string2 = (char *) malloc (size + 1); for (i = 0; i < size; i++) { string2[size – i] = string[i]; } string2[size+1] = ‘\0’; printf (“The string printed backward is %s\n”, string2); }
4) 按〈Esc〉键,从插入模式进入冒号模式。 5) 输入wq,保存退出
四、 实验报告要求: 1.记录输入LINUX相关命令后系统输出。 2.使用过程出现的问题及解决方法 6
实验二: 进程管理实验 一、实验目的: (1)了解有关Linux系统调用。 (2)学习有关Linux的进程创建,理解进程创建后两个并发进程的执行。 (3)加深对进程概念的理解,明确进程和程序的区别。
二、实验内容 (1)进程的创建。 在Linux环境下,编写一个程序使用系统调用fork()创建2个子进程。当此子进程运行时,在系统中由一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符’x’,子进程分别显示’y’和’z’。试记录屏幕上的显示结果,并分析原因。 (2)进程的管道通信。 编写一个程序使用系统调用fork生成3个子进程,并使用系统调用pipe创建一个管道,使得这3个子进程和父进程公用同一管道进行信息通信要求该程序实现数据的输入、输出以及信息提示 (3)加深对进程概念的理解,明确进程和程序的区别。
三、实验提示: (一)、Linux的系统调用 1. 进程控制的系统调用 1)fork系统调用创建新的子进程 格式: pid=int fork() fork调用返回时,系统中已有两个用户级环境完全相同的进程存在,这两个进程从fork调用中得到的返回值不同,其中子进程得到的返回值为零,父进程得到的返回值是新创建子进程的进程标识号。
2)exec系统调用 格式:int execl(path,arg0,arg1,…,argn,(char *)0) char *path, *arg0, *arg1, …, *argn ; exec调用进程的正文段被指定的目标文件的正文段所覆盖,其属性的变化方式与fork成功后从父进程那里继承属性的方式几乎是一样的。系统中绝大多数命令都是通过exec来执行的,不但shell进程所创建的子进程使用它来执行用户命令,shell进程本身和它的祖先进程也是用exec来启动执行的。 7
3) exit 系统调用终止进程执行 格式:void exit(status) ;int status ; 参数status是调用进程终止时传递给其父进程的值。如调用进程还有子进程,则将其所有子进程的父进程改为1号进程。
4) wait 系统调用等待子进程暂仃或终止 格式:int wait(stat_loc) int wait((int *)0) int stat_loc ; wait 调用将调用进程挂起,直到该进程收到一个被其捕获的信号或者它的任何一个子进程暂仃或终止为止。如果wait 调用之前已有子进程暂仃或终止,则该调用立即返回。
5) lockf 锁定文件 格式:int lockf(fd,fuction,size) int files, fuction; long size; fd – 锁定文件标识 function=0表示不锁定;function =1(锁定);function=2(测试和锁定); function=3测试有否被锁定 size --锁定或解锁的字节数,0表示从文件的当前位置到文件尾。
(二)、进程创建程序 #include void main(int argc, char *argv[ ]) { int pid; pid=fork(); /* fork child process */ if (pid<0) { fprintf(stderr, “Fork Failed”); exit(-1);} else if (pid= =0) /* child process */ 8
{ execlp(“/bin/ls”,”ls”,NULL);} else /* 进入父进程 */ { wait(NULL); printf(“child Complete”); exit(0); } }
(三)、进程通信的系统调用函数实例 1)pipe系统调用 格式: int pipe (filedes) int filedes [2];
管道通信程序 #include #include char parent[]={“A message from parent .”}; char child[]={“A message from child .”}; main() { int chan1[2],chan2[2]; char buf[100]; if (pipe(chan1)==-1 || pipe(chan2)==-1) errexit(“pipe”); if (fork())