-- [ 本帖最后由 nicholasni 于 2009-9-27 07:22 编辑 ]
by nicholasni - C/C++ - 2009-09-26 11:14:22 阅读(2518) 回复(5)
下面的代码是在flw兄写的代码修改而得,进程1写入数据到buffer,进程2读出来,并对进程1的数据回答,请教进程1如何去读取进程2的回答?如何处理shmwrite?
进程1: //shmwrite
#include
HANDLE CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName ); 1、这个函数在win里边,使根据lpName作为唯一的key吗? 2、如果别的进程也创建同样的lpName的一块内存,那么这两块内存是否是一块? 3、如果是一块,是由Win OS自己干的吗?他是怎么做到的?(偷摸干的?)
一进程A用malloc动态申请一块内存,得到这个内存的指针,然后它通过进程间通信将这个指针值传给另一个进程B. 进程B得到这个指针值,它有权访问指针指向的那块内存吗? 还有动态申请得到的内存指针是虚地址还是实地址 望xdjm指点 :?
fd_map=open(path, O_CREAT|O_RDWR|O_TRUNC, 00777); write(fd_map," ", sizeof(CPipegData)); pmap = (CPipeData*) mmap( NULL,sizeof(CPipeMsgData), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 ); pMsg->dwPduLenth = pmap->Msgdata.msgLenth; if(pmap->Msgdata.pMsgData && pMsg->dwPduLenth != 0) { pMsg->pMsgBuf = new unsigned char[pMsg->dwPduLenth + 1]; memcpy(pMsg->pMsgBuf, pmap->Msgdata.pMsgData, pMs...
我在编写一个服务程序,是对一个后台仿真软件的封装,现在遇到了一个性能问题: 由于仿真软件得到的数据是写成文件的,然后我写的程序去读取这个文件再作处理,频繁读写文件大大降低了程序性能,所以想用共享内存的方式解决。一般书上介绍共享内存都是通过指针或shm_id在两个进程间产生联系,而我用的后台仿真软件是通过system函数以命令行的方式调用的,命令行中指定文件的路径和名称,所以不知道能不能通过fd或filename联系两个进...
想学习共享内存、消息队列、信号、信号灯等进程间通讯,无奈在网络找的都太零散了,没有一些统揽全局的资料。 哪位大侠能够提供一些这样的资料? 谢了先! 可以贴出来或者Mail到:mill888@sina.com.cn
我是UNIX新手,怎么在SCO UNIX下用C来编写"利用共享内存的方式来实现进程间的通讯"的程序呢?我只知道创建进程用 int fork(); 创建共享内存 int shmget(key_t key,int size,int flags);该怎么用呀? 对共享内存的读写,以及释放应该怎么做呀? 劳各位老兄赐教,最好贴一个事例代码. 谢谢!!!!!!
我在shm_open的时候,open的文件名称为:/tmp/.posix_shm 但是返回的fd为-1,失败,后来文件名称改为posix_shm,也微是说不再是带路径了,就没问题了 系统是RedHat AS4, gcc 3.23 原来本意是想在/tmp目录下创建这个文件的,因为Richard Stevens的UNIX网络编程第二卷里也有这样的例子,然后还可以观察这个文件的各种信息。 但是实际情况是这么做无法成功,我把文件名称改为不带路径后就ok了,当然,在unix网络编程第二卷中的第...