欢迎来到天天文库
浏览记录
ID:37423396
大小:401.00 KB
页数:16页
时间:2019-05-23
《西电计算机操作系统进程通信》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、西安电子科技大学《操作系统原理》实验报告西安电子科技大学计算机学院实验报告题目:进程通信班级:姓名:学号:西安电子科技大学《操作系统原理》实验报告内容摘要:通信进程个数2个采用的通信方式匿名管道实验内容补充说明无一、分析和设计1.理论分析匿名管道主要用在本地父子进程之间的通信,首先由父进程创建一个匿名管道,在创建成功后,便可以获得匿名管道的读写句柄,然后父进程就可以向匿名管道中写入和读取数据。要实现父子间通信,就要父进程中创建一个子进程,子进程可以继承和使用父进程的一些句柄。在创建子进程的过程中,必须将子进程的标准输入句柄设置为父进程的读管道的句柄,子进程的标准输出句柄设置
2、为父进程的写管道的句柄,这样,父子进程之间就可以通信了。2.总体设计管道一先由父进程创建一个匿名管道,再由父进程获得读写句柄,构建读写的方式;由父进程创建子进程,实现父进程一样的通信功能。父进程子进程管道二二、详细实现1、父进程的实现1)消息以及成员函数和成员变量的声明public:西安电子科技大学《操作系统原理》实验报告afx_msgvoidOnBnClickedBtnCreatePipe();//创建匿名管道afx_msgvoidOnBnClickedBtnWritePipe();//写匿名管道afx_msgvoidOnBnClickedBtnReadPipe();//
3、读匿名管道voidParentReadPipe(void);//定义父进程读匿名管道的成员函数voidParentWritePipe(void);//定义父进程写匿名管道的成员函数voidCreateSecurityAttributes(PSECURITY_ATTRIBUTESpSa);//创建SECURITY_ATTRIBUTES结构的成员函数voidCreateStartUpInfo(LPSTARTUPINFOlpStartUpInfo);//创建STARTUPINFO结构的成员函数voidCreateNoNamedPipe(void);//创建匿名管道的成员函数//分
4、别代表要从匿名管道中读的数据和要写到匿名管道中的数据CStringm_CStrReadPipe;CStringm_CStrWritePipe;//保存创建匿名管道后所得到的对匿名管道的读写句柄HANDLEhPipeRead;HANDLEhPipeWrite;//保证匿名管道只创建一次BOOLm_PipeIsCreated;西安电子科技大学《操作系统原理》实验报告2)消息处理函数//创建匿名管道按钮的消息处理函数voidCNoNamedPipeParentDlg::OnBnClickedBtnCreatePipe(){if(m_PipeIsCreated==FALSE){th
5、is->CreateNoNamedPipe();}}//写入数据到匿名管道中按钮的消息处理函数voidCNoNamedPipeParentDlg::OnBnClickedBtnWritePipe(){this->ParentWritePipe();}//从匿名管道中读取数据按钮的消息处理函数voidCNoNamedPipeParentDlg::OnBnClickedBtnReadPipe(){this->ParentReadPipe();}//接收数据voidCNoNamedPipeParentDlg::ParentReadPipe(void);//发送数据voidCNoN
6、amedPipeParentDlg::ParentWritePipe(void)//创建SECURITY_ATTRIBUTES结构voidCNoNamedPipeParentDlg::CreateSecurityAttributes(PSECURITY_ATTRIBUTESpSa){//这里必须将bInheritHandle设置为TRUE,//从而使得子进程可以继承父进程创建的匿名管道的句柄pSa->bInheritHandle=TRUE;pSa->lpSecurityDescriptor=NULL;pSa->nLength=sizeof(SECURITY_ATTRIBUT
7、ES);}//用来初始化新进程的STARTUPINFO成员voidCNoNamedPipeParentDlg::CreateStartUpInfo(LPSTARTUPINFOlpStartUpInfo)//创建匿名管道voidCNoNamedPipeParentDlg::CreateNoNamedPipe(void);2、子进程的实现1)消息以及成员函数和成员变量的声明:protected:HICONm_hIcon;西安电子科技大学《操作系统原理》实验报告//生成的消息映射函数virtualBOOLOnInitDi
此文档下载收益归作者所有