如何实现C编写的程序与MFC实现进程间数据共享?
我打算用MFC程序调用那个C程序执行某些功能,然后要它把结果返回,不知道要用什么方法? 问题点数:20、回复次数:10Top
1 楼fjtuhcy(不可思艺)回复于 2005-05-18 21:44:25 得分 0
现在没人吗??Top
2 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2005-05-18 22:45:31 得分 2
用匿名管道Top
3 楼xyw2278(启明星)回复于 2005-05-19 00:05:42 得分 0
方法好多啊,就是进程间进行通信吧!
剪贴板,磁盘文件,Top
4 楼xyw2278(启明星)回复于 2005-05-19 00:08:45 得分 3
也可以使用管道的:
匿名管道由CreatePipe()函数创建,该函数在创建匿名管道的同时返回两个句柄:管道读句柄和管道写句柄。CreatePipe()的函数原型为:
BOOL CreatePipe(PHANDLE hReadPipe, // 指向读句柄的指针
PHANDLE hWritePipe, // 指向写句柄的指针
LPSECURITY_ATTRIBUTES lpPipeAttributes, // 指向安全属性的指针
DWORD nSize // 管道大小
);
通过hReadPipe和hWritePipe所指向的句柄可分别以只读、只写的方式去访问管道。在使用匿名管道通信时,服务器进程必须将其中的一个句柄传送给客户机进程。句柄的传递多通过继承来完成,服务器进程也允许这些句柄为子进程所继承。除此之外,进程也可以通过诸如DDE或共享内存等形式的进程间通信将句柄发送给与其不相关联的进程。
在调用CreatePipe()函数时,如果管道服务器将lpPipeAttributes 指向的SECURITY_ATTRIBUTES数据结构的数据成员bInheritHandle设置为TRUE,那么CreatePipe()创建的管道读、写句柄将会被继承。管道服务器可调用DuplicateHandle()函数改变管道句柄的继承。管道服务器可以为一个可继承的管道句柄创建一个不可继承的副本或是为一个不可继承的管道句柄创建一个可继承的副本。CreateProcess()函数还可以使管道服务器有能力决定子进程对其可继承句柄是全部继承还是不继承。
在生成子进程之前,父进程首先调用Win32 API SetStdHandle()使子进程、父进程可共用标准输入、标准输出和标准错误句柄。当父进程向子进程发送数据时,用SetStdHandle()将管道的读句柄赋予标准输入句柄;在从子进程接收数据时,则用SetStdHandle()将管道的写句柄赋予标准输出(或标准错误)句柄。然后,父进程可以调用进程创建函数CreateProcess()生成子进程。如果父进程要发送数据到子进程,父进程可调用WriteFile()将数据写入到管道(传递管道写句柄给函数),子进程则调用GetStdHandle()取得管道的读句柄,将该句柄传入ReadFile()后从管道读取数据。
如果是父进程从子进程读取数据,那么由子进程调用GetStdHandle()取得管道的写入句柄,并调用WriteFile()将数据写入到管道。然后,父进程调用ReadFile()从管道读取出数据(传递管道读句柄给函数)。
在用WriteFile()函数向管道写入数据时,只有在向管道写完指定字节的数据后或是在有错误发生时函数才会返回。如管道缓冲已满而数据还没有写完,WriteFile()将要等到另一进程对管道中数据读取以释放出更多可用空间后才能够返回。管道服务器在调用CreatePipe()创建管道时以参数nSize对管道的缓冲大小作了设定。Top
5 楼fjtuhcy(不可思艺)回复于 2005-05-19 09:56:29 得分 0
在C中怎么写进程间通信阿??应该和MFC不一样吧?Top
6 楼fjtuhcy(不可思艺)回复于 2005-05-19 15:38:28 得分 0
求解Top
7 楼hard_stone()回复于 2005-05-19 17:50:57 得分 5
C里面如果注重可移值性可以用套接字实现,如果只是在WINDOWS环境下同样可以管道等,调用API就可以了。Top
8 楼heguosheng(何国胜)回复于 2005-05-23 20:53:53 得分 2
upTop
9 楼xyw2278(启明星)回复于 2005-05-24 17:48:41 得分 3
很简单的一个方法,
你可以在c把通信内容写入文件啊
然后在MFC中读Top
10 楼si_wei_chen(夺命炮手)回复于 2005-05-25 00:09:51 得分 5
共享内存,动态数据交换,socket,netbios,邮槽,管道,文件,剪贴板Top




