操作系统上机报告材料.doc

操作系统上机报告材料.doc

ID:55955526

大小:305.50 KB

页数:29页

时间:2020-06-18

操作系统上机报告材料.doc_第1页
操作系统上机报告材料.doc_第2页
操作系统上机报告材料.doc_第3页
操作系统上机报告材料.doc_第4页
操作系统上机报告材料.doc_第5页
资源描述:

《操作系统上机报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、操作系统上机报告实验一、匿名管道通信一、实验目的学会创建匿名管道,并且能够利用管道进行进程间的通信。二、实验容分别建立名为Parent的单文档应用程序和Child的单文档应用程序作为父子进程,由父进程创建一个匿名管道,实现父子进程向匿名管道写入和读取数据。三、设计与实现过程本实验在VC6.0上实现§A.父进程§先建一个Parent的单文档应用程序,增加“创建管道”“读取数据”“写入数据”三个菜单,并添加消息响应函数OnPipeCreate(),OnPipeRead(),OnPipeWrite()。在CParent

2、View类中增加成员变量HANDLE类型的hRead,hWrite,初始化变量,并在析构函数中释放句柄:§voidCParentView::OnPipeWrite()§{§if(!CreatePipe(…))/*创建匿名管道*/§{§/*显示消息“创建管道失败!”*/§/*退出*/§}§if(!CreateProcess(…))/*创建子进程*/§{§/*关闭句柄hRead、hWrite*/§/*显示消息“创建子进程失败!”*/§/*退出*/§}§}§voidCParentView::OnPipeRead()§{

3、§/*定义一个字符数组,用于存放读取的数据*/§if(!ReadFile(…))/*读取数据*/§{§/*显示消息“读取数据失败!”*/§/*退出*/§}§/*打印读取的数据*/§/*退出*/§voidCParentView::OnPipeWrite()§{§/*定义一个字符数组,用于存放写入的数据*/§if(!WriteFile(…))/*写入数据*/§{§/*显示消息“写入数据失败!”*/§/*退出*/§}§}§B.子进程§建一个Child的单文档,在CChildView中增加两个成员HANDLE型的成员变量

4、hRead,hWrite,并添加消息响应函数OnPipeRead(),OnPipeWrite(),再添加虚函数OnInitialUpdate(),并在析构函数中释放句柄。§voidCChildView::OnInitialUpdate()§{§hRead=GetStdHandle(…)/*获取标准输入句柄*/§hWrite=GetStdHandle(…)/*获取标准输出句柄*/§}§voidCParentView::OnPipeRead()§{§/*定义一个字符数组,用于存放读取的数据*/§if(!ReadFil

5、e(…))/*读取数据*/§{§/*显示消息“读取数据失败!”*/§/*退出*/§}§/*打印读取的数据*/§/*退出*/§}§voidCParentView::OnPipeWrite()§{§/*定义一个字符数组,用于存放写入的数据*/§if(!WriteFile(…))/*写入数据*/§{§/*显示消息“写入数据失败!”*/§/*退出*/§}§}#######################父进程代码#######################voidCFatherView::OnPipeCreate(){

6、//TODO:AddyourcommandhandlercodehereSECURITY_ATTRIBUTESsa;sa.bInheritHandle=TRUE;sa.lpSecurityDescriptor=NULL;sa.nLength=sizeof(SECURITY_ATTRIBUTES);if(!CreatePipe(&hRead,&hWrite,&sa,0)){MessageBox("创建管道失败!");return;}STARTUPINFOsui;PROCESS_INFORMATIONpi;ZeroM

7、emory(&sui,sizeof(STARTUPINFO));//将数据清零sui.cb=sizeof(STARTUPINFO);sui.dwFlags=STARTF_USESTDHANDLES;sui.hStdInput=hRead;sui.hStdOutput=hWrite;sui.hStdError=GetStdHandle(STD_ERROR_HANDLE);if(!CreateProcess("H:\OS作业\Experiment1_匿名管道通信\Child\Debug\child.exe"

8、,NULL,NULL,NULL,TRUE,0,NULL,NULL,&sui,&pi)){CloseHandle(hRead);CloseHandle(hWrite);//关闭句柄,将核对象的使用计数减1,这样当操作系统发现核对象//的使用计数为0时,将清除核对象。hRead=NULL;hWrite=NULL;MessageBox("创建子进程失败!");return;}e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。