精品文档
READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(INVALID_HANDLE_VALUE==hMailslot) { MessageBox(\打开油槽失败!\ return; } CString str; char buf[100]; m_edit.GetWindowText(str); strcpy_s(buf,str); DWORD dwWrite; if(!WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL)) { MessageBox(\写入数据失败!\ CloseHandle(hMailslot); return; } CloseHandle(hMailslot); } (写不完时,可另加附页。) .
精品文档
三、实验结果: 1、实验截图: 实 验 结 果 及 分 析 2-1进程控制达到数据同步处理截图 2-2 油槽通信控制面板截图 .
精品文档
2-3 油槽-服务器截图 2-4 油槽-客户端截图 2-5 发送-接受效果截图 .
精品文档
2、结果分析: 1)、ls 命令列出了指定目录下的文件名和目录名,参数-l要求显示文件或目录的详 细信息,例如类型、访问权限、连接数、拥有者等。 在Linux中,用户通过利用fork创建的进程来与原进程运行相同的程序代码,为了 使新进程运行新的程序,用户可以使用系统调用exec来装入一个新的程序到当前进 程的地址空间,如果exec调用成功,系统开始执行新程序,永远不会返回原来的程 序。 2)、进程同步与互斥控制,能有效的控制全局变量在某一进程执行过程中唯一被访 问。在多线程程序中容易出现共享资源因时间片到期而终止访问,这样就很容易出 现数据的错乱。假如全局变量未火车票;对于线程函数(FunProc1、FunProc2),在 访问全局变量ticket时,ticket自减一。如果在线程函数1(FunProc1)访问ticket, 还没有来得及自减一就因时间片到期而被线程函数2(FunProc2)抢占访问,然后 自减一。这样就造成了资源数据不一致,从而产生很危险的后果。 本实验通过设置互斥信号量从而达到线程之间对共享资源的同步访问,以此还可以 实现进程同步中的读者/写者问题。 3)、由于油槽是单向通信机制,所以只能通过创建油槽服务器进程读取数据,打开 油槽客户端进程写入数据。如果只打开油槽服务器,创建读取数据进程而没有打开 客户端就会导致服务器进入无限等代状态,造成程序崩溃。 在创建进程句柄后要记得释放句柄,不然会产生不良后果。 心 得 体 会 在了解了操作系统中进程间的通信的方式我们使用了邮槽实现了简单的进程间的通信,在实际的应用中,进程间的通信往往是十分重要的,我们可以使用其它的应用程序提供的信息,使我们自己的程序开发更为完善,在进程间的通信中,我们还可以使用管道技术,管道技术又分为命名管道和匿名管道,匿名管道是实现本机之见的进程通信,命名管道很好的解决了,客户端和服务器之间的通信,另一种实现服务器和客户端之间的通信是邮槽,通过该实验更加深入理解了操作系统的通信方式——邮槽通信以及信息通信。真正体会从课本上学到的东西是有限了,要提高自己的技术水平,还是得实践去努力。
.