上海交通大学网络教育学院--计算机专业--操作系统作业---操作系统实验报告_进程与进程通信
5)
6)
7)
8)
9) BOOL bRet=FALSE; //返回值判断 _MSGQ_HEADER *potherMsgInfo; //目的地的队列索引 //打开目的地的邮箱 HANDLE
other_hFileMap=OpenFileMapping(FILE_MAP_WRITE,FALSE,strName[whichProcess][SpaceEnum]);
10) if(other_hFileMap == NULL)
11) {
12)
13)
14)
15)
16) QMessageBox::information(NULL,tr("提示"), tr("打开共享内存失败")); return FALSE; }
17) //打开目的地邮箱的发送信号量
18) HANDLE other_SemaphoreSend = OpenSemaphore(SEMAPHORE_ALL_ACCESS,
FALSE, strName[whichProcess][SendEnum]);
19) //打开目的地邮箱的接受信号量
20) HANDLE other_SemaphoreReceive = OpenSemaphore(SEMAPHORE_ALL_ACCESS,
FALSE, strName[whichProcess][ReceiveEnum]);
21)
22)
23) //ReleaseSemaphore(other_Semaphore,1,NULL);
24) //打开目的地邮箱的空间
25) QProcess gzip;
26) gzip.start("clock.exe", QStringList() << "28");
27) DWORD dRet=WaitForSingleObject(other_SemaphoreSend, waitTime); 28)
29) ori = MapViewOfFile(other_hFileMap, FILE_MAP_WRITE,0,0,0);
30) lpchar = (char *) ori;
31) potherMsgInfo=(_MSGQ_HEADER *)lpchar;
32)
33) HANDLE openmutex = OpenMutex(MUTEX_ALL_ACCESS, false,
strName[whichProcess][MutexEnum]);
34) //P操作
35)
36)
37) if(dRet == WAIT_OBJECT_0)
38) {
39) gzip.close();
40) if(potherMsgInfo->MsgNum != potherMsgInfo->MsgMaxCount) //再次判断是
否可写
41) {
42) WaitForSingleObject(openmutex, waitTime);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统实验报告_进程与进程通信(7)在线全文阅读。
相关推荐: