unix作业
- 格式:wps
- 大小:42.00 KB
- 文档页数:6
unix期末试题及答案在这里我为您提供一份"Unix期末试题及答案"的文档,按照试题和答案的形式进行排版。
请注意,由于篇幅的限制,此处仅为示例文档的导言部分,具体内容请自行编写。
-------------------------------Unix期末试题及答案1. 题目一题目描述:请解释什么是Unix操作系统,并提供三个Unix操作系统的实际应用案例。
答案:Unix操作系统,简称Unix,是一种多用户,多任务的操作系统。
它最早由美国贝尔实验室开发,现在被广泛应用在各种计算设备上,包括个人电脑、服务器和嵌入式系统等。
实际应用案例:1) 服务器操作系统:Unix操作系统在服务器领域非常常见,例如常用的Linux服务器就是基于Unix系统的,它提供了高性能、高可靠性和安全性,适合构建各种网络服务和应用。
2) 大数据处理:Unix操作系统对于大规模数据处理非常适用,在数据分析、数据挖掘和机器学习等领域有广泛应用。
例如Hadoop和Spark等大数据处理框架就是基于Unix操作系统的。
3) 嵌入式系统:Unix操作系统还被广泛应用于嵌入式系统,例如智能手机、路由器和工业控制设备等。
它提供了稳定的运行环境和强大的功能,满足了各种应用领域的需求。
2. 题目二题目描述:请解释Unix文件权限的概念,并列举常用的文件权限设置和对应的数值表示。
答案:在Unix操作系统中,文件权限用来控制文件的访问级别,主要包括读取权限、写入权限和执行权限。
这些权限可以分别设置给文件的所有者、所属组和其他用户。
常用的文件权限设置及对应的数值表示如下:- r(读取权限):表示可以读取文件的内容。
对应的数值表示为4。
- w(写入权限):表示可以修改文件的内容。
对应的数值表示为2。
- x(执行权限):表示可以执行文件。
对应的数值表示为1。
- -(无权限):表示没有相应的权限。
对应的数值表示为0。
例如,权限设置为"rwxr-xr--"的文件,数值表示为"754"。
16春华师《UNIX操作系统》在线作业华师《UNIX操作系统》在线作业⼀、单选题(共 20 道试题,共 40 分。
)1. 除了Tlnt之外,下⾯选项中还可以登录到远程主机的命令是( )。
. UUP. RP. rlogin. Ping正确答案:2. 要编译程序,在命令提⽰符输⼊( )。
. 程序名. -o 程序名. 程序名. 程序名正确答案:3. sh语⾔中的循环语句不包含(). whil循环. until循环. for循环. forh循环正确答案:4. 在系统中建⽴⽤户组的命令为( )。
. groupl. group. group. Usr正确答案:5. 进程的同步是指进程间在逻辑上的相互( )关系。
. 联接. 制约. 继续. 调⽤正确答案:6. op表⽰操作符,它不可以是下列()操作符. “:-”. “:=”7. 管道特点是(). 双向的. ⼀致的. 共享的. 单向的正确答案:8. 修改⼝令的命令是( )。
. who. pssw. psswor. Pw正确答案:9. UNIX的⽹络协议是()协议. TP/IP. TP. IP#ISO正确答案:10. 如何将shll脚本xm.sh设置为所有⽤户都能执⾏ ( )。
. hmo +x xm.sh. hmo +w xm.sh. hmo +r xm.sh. hmo u+x xm.sh正确答案:11. UNIX⽂件系统的⽬录结构是⼀棵倒挂的树,⽂件都按其作⽤分门别类地放在相关的⽬录中。
现有⼀个外部设备⽂件,我们应该将其放在()⽬录中。
. /in. /t. /v. /li正确答案:12. ⽤来查找特定字符串的命令是()。
. fin. whris13. 要把消息回复给指定的⽤户, 在mil模式下,输⼊( )。
. r usrnm. R usrnm. s usrnm. m usrnm正确答案:14. shll提供()维数组,并且没有限定数组的⼤⼩. ⼀. ⼆. 多. N正确答案:15. ()是⾯向屏幕编辑的邮件程序. LM. Pin. mil. pop正确答案:16. UNIX⽂件和⽬录的存取权限不包含(). r(r). w(writ). x(xut). (xut)正确答案:17. fin -links n 命令的作⽤是( )。
unix操作系统命令练习答案unix操作系统命令练习-答案I.文件和目录操作1.如何创建一个目录?MkDirName2.如何一个命令创建多级目录src/main/java?mkdir psrc/main/java3.如何将文件修改为可执行?chmoda+xfilename4.如何查看当前目录的全路径?pwd5.如何重复执行最近执行过的netstat命令?上下方向键切换已连续执行的命令6.怎样用find命令列出/home/app下面所有子目录中的test.txt文件?查找/主页/应用程序名称测试。
txt7.怎样为/home/app/resin-3.1.11创建一个软链接/home/app/resin? ln-s/home/app/resin-3.1.11/home/app/resin8.如何删除/home/demo目录及子目录下三天前产生的所有log文件find/home/democmtime+3*.logcexecrm-r{}\\;9.请在系统任务要求中添加/home/shell/demo SH周一至周五9:00到15点每分钟执行一次并将回显写入到/home/log/demo.logcrontabce *9-15**1-5/主页/外壳/演示。
sh1>;/主页/日志/演示。
log2>;&一10.如何使用vi编辑器将一个文件内容所有“abc”替换成“def”?:1,$s/abc/def/g11.创建文件s.sh,将其复制到桌面上的主文件夹,并更改s.sh的权限为765touchdesktop/s.shcpdesktop/s.sh~/s.shchmod765~/s.sh12.在主目录下创建一个文件夹mx,在mx文件夹下面创建一个s.sh文1.s.sh的功能是在MX目录txtmkdircp~/mxtouch~/MX/s.sh中创建一个文本文件echo?touch../1.txt?>~/mx/s.shchmoda+x~/mx/s.sh13.将/TMP/K目录的权限更改为所有者读/写执行组用户读/写其他用户无权限chmod740/tmp/k14.列出当前目录中的所有文件用什么命令?lsca.15.使用什么命令显示当前目录路径?pwd16.用vi编辑文件时用什么命令保存文件?在命令模式下:wq17.在主目录中创建文件和文件夹,并分别用RM删除touch~/filemkdir~/dirrmdirfile1二过滤内容18.如何在文件内容中输出带有“ABC”的行?grep?abc?filename19.如何输出内容不包含“ABC”的行?格雷普科夫?abc?文件名20。
模拟UNIX文件系统的设计及实现操作系统大作业UNIX文件系统是一种常见的操作系统文件系统,它提供了一种以层次结构组织文件和目录的方式来管理存储设备上的数据。
为了完成这个大作业,我们需要设计并实现一个简化版的UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
首先,我们需要设计文件系统的存储结构。
文件系统可以在硬盘上以一个分区的形式存在,我们可以使用一个整数数组来表示硬盘,每个数组元素表示硬盘上的一个块。
我们还可以使用一个超级块来记录文件系统的信息,例如文件系统的状态、块的总数、块的使用情况等。
此外,我们还需要设计并实现一个索引节点表,用于保存文件或目录的元数据信息,例如文件的大小、权限、创建时间等。
接下来,我们需要实现文件和目录的管理功能。
文件和目录可以通过其在索引节点表中的索引来标识。
我们可以使用一个数组来表示目录,数组的每个元素都是一个目录项,记录了文件或子目录的名字和索引节点的索引。
我们还可以使用一个栈来保存当前目录的路径,方便用户在不同目录之间切换。
为了支持目录的嵌套,我们可以在目录项中添加一个指向父目录的索引。
在文件和目录的管理基础上,我们还需要实现文件的读写操作。
文件可以通过其索引节点的索引来标识。
当用户要读取文件时,我们需要根据文件的索引节点找到文件的块地址列表,然后将列表中的块读取到内存中。
当用户要写入文件时,我们需要找到文件的块地址列表中最后一个块,如果该块已满,则需要申请一个新的块,并将新块的地址添加到块地址列表中。
同时,我们还需要更新文件的大小和修改时间等元数据信息。
最后,我们还需要实现文件权限的管理功能。
文件的权限信息可以通过文件的索引节点来保存。
我们可以使用一个整数来表示文件的权限,例如八进制数,每一位代表一个权限,例如读取权限、写入权限和执行权限等。
当用户要访问文件时,我们需要根据用户的权限和文件的权限来判断用户是否具有相应的权限。
总结起来,要完成这个大作业,我们需要设计并实现一个模拟UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
Unix命令1. 简介Unix是一个多用户、多任务操作系统,因其稳定性、安全性和可靠性而广泛应用于服务器和工作站环境中。
Unix系统提供了丰富的命令行工具,这些工具可以通过命令行终端或shell程序来调用和使用。
本文档将介绍Unix系统中常用的一些命令,涵盖文件和目录操作、进程管理、系统监控等方面。
2. 文件和目录操作2.1 lsls命令用于列出目录下的文件和子目录。
常用选项包括:•-l:以长格式显示文件和目录的详细信息•-a:显示所有文件和目录,包括隐藏文件•-h:以人类可读的格式显示文件大小例如,执行ls -l命令可以列出当前目录下的所有文件和子目录,并显示详细信息。
2.2 cdcd命令用于切换当前工作目录。
可以使用绝对路径或相对路径作为参数。
例如,执行cd /home/user可以切换到/home/user目录。
执行cd ..可以返回上一级目录。
2.3 cpcp命令用于复制文件或目录。
常用选项包括:•-r:递归复制目录及其内容•-i:覆盖已存在的文件时进行提示例如,执行cp file1 file2可以复制file1到file2。
2.4 mvmv命令用于移动文件或目录,也可用于重命名文件或目录。
例如,执行mvfile1 file2可以将file1重命名为file2。
2.5 rmrm命令用于删除文件或目录。
常用选项包括:•-r:递归删除目录及其内容•-f:强制删除,无需确认例如,执行rm file1可以删除file1。
3. 进程管理3.1 psps命令用于列出系统中运行的进程。
常用选项包括:•-e:显示所有进程,包括系统级进程•-f:显示详细信息,包括进程间的关系例如,执行ps -e可以列出系统中所有进程的信息。
3.2 toptop命令用于实时监测系统中的进程。
它可以显示当前资源使用情况和每个进程的详细信息,如CPU使用率、内存使用量等。
按下q键可以退出top命令。
3.3 killkill命令用于终止指定的进程。
UNIX系统操作命令大全UNIX系统操作命令第一章登录和退出用户在登录前,首先要向系统管理员申请一个用户注册名,不论用户从哪台计算机登录到ITPNET上都将访问相同的文件系统。
1.1 登录当屏幕上出现Login提示符时,用户可以输入自己的用户注册名,并按回车键。
若有口令,系统将提示用户输入密码,并按回车键,口令输入正确后,用户登录成功。
这时,屏幕上会显示出一些信息和命令提示符。
如:Login: guest [Enter]passwd: ****** [Enter]sun%注: 用户名要用小写字母输入,UNIX系统区分大小写字母。
[hide]1.2 退出当用户准备退出自己的计算机帐号时,可在系统示符下输入logout或exit或按[Ctrl-D]。
当屏幕出现Login时,用户可以安全地离开计算机了。
如:sun% logout [Enter]Login:1.3 修改口令为了防止他人使用自己的帐号,在你首次登录后,请用passwd命令修改只有本人知道的保密口令,口令通常由此可6到8个字母数字组成。
如:sun% passwd[Enter]Old Passwd: ******New Passwd: ******update 更新磁盘 val SCCS实用程序 vc SCCS实用程序 vi 全屏幕编辑器 volcopy 文件系统的文字拷贝 wait 等待所有字进程结束 while 循环语句 who 显示谁在使用系统w hodo 显示哪些用户在做什么 write 和另一用户直接对话 xargs 建立参数表并执行命令y acc 语法分析程序生成器;)cl注:当你退出系统再次登录时,就要使用新的口令。
第二章目录操作命令2.1 显示目录命令:pwd(print working directory)格式:pwd功能:显示出用户当前工作目录的全路径名。
例如:% pwd2.2 建立目录命令:mkdir(make directory)格式:mkdir directory_name功能:建立新目录例如:% mkdir directory2.3 改变目录命令:cd(change directory)格式:cd directory_name功能:改变当前工作目录注释:目录名选项有:(1) 目录名,转到当前目录下的子目录。
华南理工大学“计算机操作系统”课程设计大作业(含答案)一、题目: 模拟UNIX文件系统的设计及实现多用户、多目录的文件系统的设计------用VC或Delphi编程模拟文件系统的管理二、目的通过OS文件子系统的设计、增强OS设计的技巧,达到提高解决实际OS的设计能力的提高。
三、内容多用户的多级目录的文件系统设计。
四、功能要求1. 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户)2. 多级目录:可有多级子目录;3. 具有login (用户登录)4. 系统初始化(分配内存空间,创建文件卷,初始化根目录)5. 文件的创建:create6. 文件的打开:open7. 文件的读:read8.文件的写:write9. 文件关闭:close10. 删除文件:delete11. 创建目录(建立子目录):mkdir12. 改变当前目录:cd13. 列出文件目录:dir(包括文件属性)14. 删除目录:rmdir15. 退出:logout五、实现方法该大作业是实现一个类似unix的文件系统,只需要实现上述功能要求中所列出的功能,代码中不能调用OS系统提供的与文件操作和磁盘操作有关的系统调用。
设计提示:用内存模拟磁盘操作,对文件和目录的创建、删除、读写都用对内存的操作来模拟。
文件的属性信息用内存数据结构保存;所有文件内容和目录信息保存在内存中。
文件属性包括:文件名,所有者,创建时间,最后访问时间,文件大小,数据区指针或I-node指针等。
当程序运行结束时回收内存,信息不需要保存到磁盘,下次重新运行程序时重头开始。
六、实验要求每人完成一份大作业实验报告。
报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。
1)给出数据定义和详细说明;2)给出实现思想和设计流程;3)调试完成源程序;4)屏幕观察运行结果;5)总结自己的设计体会;编程语言及操作系统平台不限。
七、提交内容本大作业每个人必须单独完成。
unix试题及答案(一一、单选题(每题1分,共10分)1. Unix系统中,哪个命令用于查看当前目录下的文件和文件夹?A. lsB. pwdC. cdD. mkdir答案:A2. 在Unix中,如何查看当前系统的运行时间和平均负载?A. uptimeB. topC. psD. who答案:A3. Unix系统中,哪个命令用于改变文件的权限?A. chmodB. chownC. chgrpD. chmode答案:A4. 在Unix中,如何查看一个文件的内容而不编辑它?A. viB. catC. editD. view答案:B5. Unix系统中,哪个命令用于搜索文件系统中的文件?A. findB. searchC. locateD. query答案:A6. 在Unix中,如何查看当前目录下的所有文件和文件夹,包括隐藏文件?A. ls -aB. ls -lC. ls -rD. ls -h答案:A7. Unix系统中,哪个命令用于查看当前系统的磁盘使用情况?A. dfB. duC. diskusageD. diskinfo答案:A8. 在Unix中,如何复制一个文件?A. copyB. cpC. duplicateD. clone答案:B9. Unix系统中,哪个命令用于查看当前系统的版本信息?A. versionB. unameC. sysinfoD. osinfo答案:B10. 在Unix中,如何删除一个文件?A. delB. rmC. deleteD. remove答案:B二、多选题(每题2分,共10分)1. Unix系统中,哪些命令用于查看当前路径?A. pwdB. lsC. cdD. path答案:A2. 在Unix中,哪些命令用于查看进程信息?A. psB. topC. jobsD. task答案:A, B3. Unix系统中,哪些命令用于文件权限的修改?A. chmodB. chownC. chgrpD. chmode答案:A, B, C4. 在Unix中,哪些命令用于文件内容的查看?A. catB. lessC. moreD. view答案:A, B, C5. Unix系统中,哪些命令用于文件的复制?A. cpB. copyC. duplicateD. clone答案:A三、判断题(每题1分,共10分)1. Unix系统中,使用“cd ..”命令可以进入上级目录。
《UNIX_Linux操作系统内核结构》课程报告题目1、如果几个进程竞争一个缓冲区,内核保证没有一个进程会永远睡眠等待,但并不保证不会出现一个进程一直等待得不到缓冲区的情况发生。
请重新设计算法getblk 以保证一个进程最终能用上一个缓冲区。
2、在通常的目录结构中,对目录项的搜索都是线性的。
请设计一种新的目录结构,其中各目录项是按其hash 值以某种方式排列的,对其中目录项的搜索也是按其hash值来查找的。
3、一个进程可以用“追加写(APPEND)”方式打开一个文件,这表明每次写操作都是从标识当前文件尾的字节偏移量处开始。
如果一个进程以“追加写”方式打开一个文件,并定位于文件头,会发生什么呢?4、设计一个系统调用,该系统调用将一个已存在的文件截为任意给定的大小,并说明实现方法。
5、UNIX系统V允许一个路径名分量最长达14个字符。
namei算法把一个路径名分量中多余的字节截掉。
假设保持定长目录项的目录结构,应该怎样设计目录结构和namei算法,才能允许任意长度的目录项名称?6、在UNIX的文件系统中,文件的物理存储结构是以索引方式来组织的。
如果将存储结构改为串联方式,即在每个数据块的末尾加上一个指向下一个数据块的指针,则文件系统应做哪些修改?7、如果有10个进程都要对同一个文件进行顺序地读操作,请分析比较这10个进程分别在串行运行和并行运行这两种运行模式下,哪一种的综合效率更高?8、下面的代码段创建一个具有两个进程的环。
int fd[2];pipe(fd);dup2(fd[0], STDIN_FILENO);dup2(fd[1], STDOUT_FILENO);close(fd[0]);close(fd[1]);pipe(fd);if(fork()==0)dup2(fd[1], STDOUT_FILENO);elsedup2(fd[0], STDIN_FILENO);close(fd[0]);close(fd[1]);其中dup2(oldfd, newfd)函数是把文件描述符oldfd指向的内容复制到文件描述符newfd 中,STDIN_FILENO和STDOUT_FILENO是进程的标准输入和标准输出文件描述符。
试分析其主要工作过程。
如果用此结构来建立三个进程的环,又该如何修改该程序?报告上交时间:2013年11月21日(周四)上午8:30~10:00报告上交地点:信软学院大楼西106室1、每次当进程被唤醒去争夺缓冲区时,恰好有其他更高优先级也在等待该缓冲区资源,此时该进程由于得不到缓冲区而继续睡眠等待下去,这样就会出现一个进程一直等待得不到缓冲区的情况发生。
可以用以下办法解决上述问题:当一个进程连续多次因为得不到缓冲区而睡眠等待时,使该进程以较高的优先级睡眠等待缓冲区资源的出现,当该进程再次被唤醒时,就可以争夺到缓冲区。
重新设计的getblk算法如下:算法 getblk_new输入:文件系统号块号输出: 现在能被磁盘使用的上的上了锁的缓冲区{int waitNum = 0;int max = ox01;while(没有找到缓冲区){if(块在散队列中){if(快忙){if(++waitNum > max){sleep(以较高的优先级等待“缓冲区变为空闲”事件);continue;}else{sleep(等待“缓冲区变为空闲”事件);continue;}为缓冲区标记为“忙”从空闲表上取下缓冲区;return (缓冲区);}}else{if(缓冲表上无缓冲区){if(++waitNum > max){sleep(以较高的优先级等待“任何缓冲区变为空闲”事件);continue;}else{sleep(等待“任何缓冲区变为空闲”事件);continue;}从空闲表上取下缓冲区;if(缓冲区标记着延时写){把缓冲区异步写到磁盘上;continue;}从旧的散列队列中取下缓冲区;把缓冲区投入新的散列队列;return (缓冲区);}}}}2、新的目录结构中,目录项结构如下:字节偏移量(hash值)索引结点号文件名Hash函数的关键字取文件名的第一、第二个字符的ASCII码值的和拼接第三、第四个字符的ASCII码值的和,再拼接第五、第六个字符的ASCII码值的和。
最后加上其它所有字符的ASCII码值的和。
如passwd,关键字key为:209230219(112+97,115+115,119+100)。
Hash函数如下:hash地址1=(key mod 40960) - ( (key mod 40960) mod 16)hash地址2=(key mod 4235264) - ( (key mod 4235264) mod 16)hash地址3=(key mod 4299202560) - ( (key mod 4299202560) mod 16)这三个hash函数能够保证hash地址的值是16的整数倍。
三式中的40960,4235264,4299202560分别表示直接块、一次间接块、二次间接块的存储空间的最大偏移量。
所以求得的hash地址分别映射到直接块、一次间接块、二次间接块的数据存储空间。
事实上,我们更希望多数文件目录存放在直接块中,因为读一次间接块和二次间接块需要额外的磁盘操作时间,所以,我们在设计系统时考虑的是充分利用直接块中的存储空间。
在新建文件或者目录时或者搜索数据时,先存取直接块,如果直接块中找不到所需数据或找不到合适的存取地址。
就在间接块的存储空间中搜索。
利用线性探测法和建立公共溢出区解决hash冲突。
新建一个文件或目录时,首先用计算hash地址1,通过bmap算法把这个hash地址转换成磁盘块号,同时也计算出块内偏移量。
再通过bread算法把该块读人内存,根据块内偏移量访问对应的目录项。
3、如果一个进程以“追加写”方式打开一个文件,那么定位文件读写指针到文件任何位置对文件的写操纵没有任何影响,每次写操纵之前都会将写指针定位到文件尾。
因为O_APPEND的出现实际上是为了解决以前多个进程对同一文件写操作时候,lseek 和write是分开进行的,这样在移动文件指针和写之间进程有可能被切换,从而导致文件内容被意外覆盖等等错误。
O_APPEND告诉write操作,写之前要移动文件指针到文件末尾,这成为了一个原子操作,从而不会被打断。
4、算法思想:遍历给定的要截取的大小序列,首先新建一个i节点,然后将目标文件数据块链接到新的数据块索引表中,链接的数据块的总大小等于给点的截取大小。
接着再建立i 节点、链接,直到遍历完给定的大小序列或目标文件大小为0。
算法现实如下:算法:cut输入:文件大小序列输出:无{如果目标文件索引节点未上锁,则将其上锁;for(遍历给定的要截取的大小序列size_0到size_n){if(目标文件大小为0)return;新建inode node;将目标文件数据块链接到node中的数据块索引表中(总大小等于size_i);修改目标文件大小;修改inode中相关字段;}为目标文件索引节点解锁;}5、一个目录项最多存储路径名分量的14字符,当路径名分量超过14个字符时,利用多个目录项存储,在原来的direct数据结构中增加字段short next,新的目录项结果如下:#define MAXNAMLEN 14struct direct{short d_ino; /*目录项i节点号*/char d_name [MAXNAMELEN]; /*目录项名字字符串*/short next;}当next >= 0时,next指向下一个目录项,该目录项中d_name[]存放路径分量名的下一部分,当next < 0 时,表示当前目录项中d_name[]已存放完路径分量名。
例如有一个42个字符的路径名分量,需要三个目录项d1,d2,d3存放该分量,d1.next = d2.d_ino,d2.next = d3.d_ino,d3.next = -1。
在namei算法中,仅只需在从目录块中读取目录(工作索引节点)时,添加判断目录分量是否读取完整的操纵,以保证目录分量被完整读取。
6、A.在每个数据块的末尾加上一个指针,初始为NULL。
B.将icommon表中数据块索引表指针字段改为文件的起始块号。
7、不管是并行还是串行,从微观上看,每一时刻只有一个进程对文件进行读操纵,而且这10个进程共享一个读指针,该读指针在file表中,10个进程并行读文件时,进程上下文切换比串行读时频繁,处理机时间开销较大。
但另一方面,并行读操纵时,读取的磁盘块在缓冲区中找到的可能性较大,因为该块可能被其他的进程刚刚读过,此时减少了读取磁盘的次数,特别是当文件较大时更为明显。
因为磁盘速度比磁盘I/O慢得多,因此并行读的综合效率更高。
8、程序的主要过程:首先建立一个管道(假设为pipe1),并且将标准输入输出定位到pipe1,然后再建立一个管道(假设为pipe2),创建一个新进程,此时父进程和子进程的标准输入输出都是pipe1。
把子进程的标准输入定位到pipe2,把父进程的标准输出定位到pipe2。
此时就形成两个进程的环。
建立三个进程的环,代码修改如下:int fd[2];pipe(fd); //建立管道pipe1dup2(fd[0], STDIN_FILENO); //把管道pipe1的读指针复制到标准输出dup2(fd[1], STDOUT_FILENO); //把管道pipe1的写指针复制到标准输入close(fd[0]); //关闭不再需要的管道描述符close(fd[1]);pipe(fd); //建立新管道pipe2if(fork()==0)//将新管道pipe2的写指针复制到子进程的标准输出 dup2(fd[1], STDOUT_FILENO);else{//将新管道pipe2的读指针复制到父进程的标准输入dup2(fd[0], STDIN_FILENO);/*下面是添加的代码,方法与上面类似*/close(fd[0]);close(fd[1]);pipe(fd);if(fork()==0)dup2(fd[1], STDOUT_FILENO);else{dup2(fd[0], STDIN_FILENO);}}close(fd[0]);close(fd[1]);。