操作系统实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验报告

实验三实现shell实验目的熟悉并掌握进程的操作在(1)的基础上编写一个简单的shell实验内容完成课本上第三章的项目:实现shell在shell下,按Ctrl+C时不会终止shell实现程序的后台运行设计和编码本实验用到的理论知识Linux下进程的创建及终止, 对父子进程的简单操作,简单的信号传递,C编程的一些基本知识算法设计包含两个函数main()和setup(),main()函数打印提示符COMMAND-,然后调用setup(),它等待用户输入命令。用户输入命令后,将命令的内容接入到一个args数组(如果命令以””结尾,setup()将会更新参数background到1,表示在后台运行命令,main()函数相应的执行操作)。为使在shell下按Ctrl+c键不会终止shell,在main()中先用signal(SIGINT,SIG_IGN)忽略Ctrl+c表示的信号。编码运行与测试运行结果良好,可以实现相应的操作截图:总结与心得遇到问题要多查找资料和请教老师和同学。要不急不躁的一步步写程序。信号处理实验实验目的熟悉并掌握进程通信中的信号方式,并对信号进行捕获与处理。实验内容)编制一段程序,使用系统调用fork()创建两个子程序,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Ctrl C键),当捕捉到中断信号后,父进程调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下面信息后终止:Child process 1 is killed by parent!Child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:parent process is killed!在上述(1)中的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果并分析原因。这里signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN)分别为忽略“Ctrl Z”键信号以及忽略“Ctrl C”中断信号。设计和编码本实验用到的理论知识Linux下进程的创建及终止,对父子进程的简单操作,简单的信号传递与信号忽略,C编程的一些基本知识算法设计在(1)程序中,使用系统调用fork()创建两个子程序,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Ctrl C键),当捕捉到中断信号后,父进程调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下面信息后终止:child process 1 is killed by parent!child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:parent process is killed!得到siganal-a.c代码。在(2)中,子进程加入signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),父进程加入signal(SIGQUIT, SIG_IGN)。得到signal-b.c代码编码signal-a.c:signal-b.c:运行与测试编译运行signal-a.c,发现子进程并没有输出:查看程序可知是由于子进程也接受到Ctrl c信号,从而子进程在接收到父进程的信号前就终止。于是在signal-a.c的基础上,子进程加入signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),父进程加入signal(SIGQUIT, SIG_IGN)。其中signal(SIGINT, SIG_IGN)为忽略Ctrl c的信号,signal(SIGQUIT, SIG_IGN)为忽略Ctrl \ 信号。这就是说在子进程接收到Ctrl c信号时将其忽略,于是子进程就不会终止;还有就是父进程接收到Ctrl \信号时将其忽略,于是父进程不会终止。编译运行signal-b.c:总结与心得要多多利用老师给的资料。进程的管道通信实验目的熟悉并掌握进程通信中的管道通信方式,并通过管道进行子进程与父进程的通信实验内容编制一段程序,实现进程的管道通信。使用系统调用pipe()建立一条管道线。两个子进程p1和p2分别向管道各写一句话:Child 1 is sending message!Child 2 is sending message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。设计与编码本实验用到的理论知识Linux下进程的创建及终止,对父子进程的简单操作,简单的管道创建及利用管道传送与接收信号,C编程的一些基本知识算法设计使用系统调用pipe()建立一条管道线。两

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档