Windows进程间各种通信方式浅谈
Windows下进程间通信方式探讨

Mircmp trA pi t n o. 2 N . 2 2 0 co o ue p l ai sV 12 , o 1 ,0 6 c o
文 章 编 号 :07 7 7 2 0 )2 0 5 -0 10 - 5X(0 6 1 - 0 8 3
学 习园地
可 实 现 ; 外 , 果 存 在 进 程 间 的 数 据 传 递 ( 过 数 据 地 址 参 另 如 通
对 于第一种模式 的进程 间通信 , 通信双 方进 程的彼此 都 来 自于 同一软件开发方 , 进程间通信的协议 、 数据和 内容都 可 由软件开发方在 软件设计 阶段 统一加 以考虑 , 这就 为进程 间
微 型电脑应 用
20 0 6年第 2 2卷第 1 2期
Wid w 进 程 间通 信 方 式 探 讨 n o s下
梁 庚 , 白 焰
摘
要 : 程间通信 和数 据变换是 Wid ws应用程序 中要经 常涉及 到的一 个重要 问题 。 文扼要概括 了wid w 进 no 本 n o s进程 间通
方进程 。由此产生 了两种不 同性质的进程间 的通信模式 :
I 已方 进 程 之 间 的 通 信 、 I、 I 已方 进 程 和 他 方 进 程 间 的 通 信
4 第二种 模 式 的进程 间通信 的实现 方法
使用的第一种模式 的进程 间通 信的实现方法 在大多数情 况下均 需要通信 双方进程 事先达成通 信协议 , 得“ 取 默契” 方
另外由于wiows操作系统的进程保护机制nd这种意识的进程间通信常常会造成一般保护性错误无型gpf第一种模式的进程间通信的实现方法2进程间通信的两种模式及其特点对于第一种模式的进程间的通信为成熟的实现方法较按照软件开发方来划分系统内各个进程基本wid可划分为两类已方进程和他方进程已方进程即由软件开发方开发的应用程序进入系统后形成的进程而软件开发方开发的应用程序以外的应用程序进入系统后形成的进程称为他主要以消息机制括应用本地消息和全局消息的方法方进程
Windows进程间各种通信方式浅谈

Windows进程间各种通信方式浅谈1、Windows进程间通信的各种方法进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。
多进程/多线程是Windows操作系统的一个基本特征。
Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。
正因为使用Win32 API进行进程通信方式有多种,如何选择恰当的通信方式就成为应用开发中的一个重要问题,下面本文将对Win32中进程通信的几种方法加以分析和比较。
2、进程通信方法2.1 文件映射文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。
因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。
Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。
通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。
应用程序有三种方法来使多个进程共享一个文件映射对象。
(1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。
(2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。
第二个进程可通过这个名字打开此文件映射对象。
另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。
(3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。
第二个进程复制该句柄就取得对该文件映射对象的访问权限。
进程通信的几种方法

进程通信的几种方法进程通信是指在操作系统中,不同的进程之间进行数据交换和信息传递的过程。
在现代操作系统中,进程通信是非常重要的,因为多个进程之间的协作可以提高系统的性能和效率。
本文将介绍几种常见的进程通信方法。
1.管道通信管道通信是一种单向、半双工的通信方式,通过创建一个管道,将一个进程的输出连接到另一个进程的输入,从而实现数据的传输。
管道通信一般用于具有父子关系的进程之间或者具有共同祖先的进程之间。
2.消息队列通信消息队列通信是一种通过操作系统内核来传递消息的机制。
进程可以将消息发送到消息队列,其他进程则可以从消息队列中接收消息。
消息队列通信具有高效、可靠、灵活等特点,常用于进程之间传递数据量较大的情况。
3.共享内存通信共享内存通信是一种进程间共享内存区域的方式。
多个进程可以访问同一块内存区域,从而实现数据的共享。
共享内存通信的优点是速度快,因为进程之间不需要进行数据的复制,但是需要进程之间进行同步和互斥操作,以避免数据的冲突。
4.信号量通信信号量通信是一种通过操作系统提供的信号量机制来实现进程间同步和互斥的方式。
进程可以通过信号量来进行互斥操作,以确保共享资源的安全访问。
信号量通信常用于进程之间共享资源的管理和同步。
5.套接字通信套接字通信是一种通过网络进行进程通信的方式,常用于不同主机之间的进程通信。
套接字通信可以通过TCP或UDP协议来实现,具有跨平台、可靠性高等特点。
总结起来,进程通信是操作系统中非常重要的一部分,不同的进程之间可以通过各种方式进行数据的交换和信息的传递。
管道通信、消息队列通信、共享内存通信、信号量通信和套接字通信是常见的几种进程通信方法。
不同的通信方法适用于不同的场景,开发人员需要根据具体需求选择合适的通信方式。
进程通信的正确使用可以提高系统的性能和效率,确保系统的稳定运行。
操作系统中的进程间通信机制分析

操作系统中的进程间通信机制分析在操作系统中,进程间通信是必不可少的一项功能。
它使得不同的进程间能够进行信息交换、资源共享等操作,从而提高计算机系统的性能和效率。
在本文中,我们将对操作系统中的进程间通信机制进行分析和探讨。
一、进程间通信的概念进程是指操作系统中正在运行的程序,每个进程都有一个独立的地址空间。
进程间通信(IPC)是指在不同进程之间进行信息传递以及资源共享的机制。
在现代的多任务操作系统中,为了满足不同进程之间的通信需求,通常都会提供一些IPC机制,如信号量、消息队列、管道、共享内存等。
二、IPC机制的分类根据不同的通信方式和实现机制,IPC机制可以分为几类:共享内存、消息队列、信号量等。
共享内存共享内存是一种在多个进程之间共享内存的机制。
在共享内存中,多个进程可以访问同一个内存区域,从而实现数据共享。
共享内存的实现机制比较简单,通常使用的是内核中的一块内存来进行共享。
消息队列消息队列是一种消息传递的机制,即进程通过向消息队列发送消息,而被另一个进程获取。
消息队列的实现非常灵活,可以基于内核、管道或共享内存等来实现。
信号量信号量是一种多进程间协调的机制,可以用来实现进程间的互斥锁、条件变量等。
每个信号量都有一个值,当进程需要对某个资源进行操作时,可以减小信号量的值,当信号量的值等于0时,进程就会进入睡眠状态,等待其他进程唤醒它。
三、IPC机制的优缺点不同的IPC机制都有各自的优缺点,下面我们就来简单分析一下各种IPC机制的优缺点。
共享内存的优点是非常快速和高效的访问,因为共享内存的数据就在进程的地址空间中,不需要复制。
然而,共享内存机制的缺点是需要注意控制并发访问,否则会出现数据冲突、死锁等问题。
消息队列的优点是稳定可靠,因为发送和接收的操作都是原子操作,并且可靠性比较高。
缺点是性能问题,需要进行序列化和反序列化,因此消息队列的速度比较慢。
信号量的优点是效率高,因为它们采用基于操作系统的原语进行实现,很少需要进行上下文切换,而且可以提供多进程之间的同步和互斥锁服务。
操作系统的进程间通信与同步机制

操作系统的进程间通信与同步机制操作系统是计算机系统中最核心的软件之一,负责管理和协调计算机硬件和软件资源的使用。
在多道程序设计环境下,操作系统需要管理多个同时运行的进程,而进程间的通信和同步是操作系统中的重要任务之一。
本文将探讨操作系统中的进程间通信和同步机制的基本概念、原理和应用。
一、进程间通信(Inter-process Communication,IPC)进程间通信是指不同进程之间交换信息的机制。
在操作系统中,进程间通信是实现进程协作和数据共享的基础。
常见的进程间通信方式包括管道、消息队列、信号量、共享内存等。
1. 管道(Pipe)管道是一种半双工的通信方式,将一个进程的输出连接到另一个进程的输入,实现进程之间的单向通信。
管道分为有名管道和无名管道,有名管道可以在不同进程之间共享,而无名管道只能在具有父子关系的进程之间使用。
2. 消息队列(Message Queue)消息队列是一种可以在不相关进程之间传递数据的通信机制,它通过将消息放入队列中,实现进程之间的异步通信。
消息队列可以实现进程之间的解耦,提高系统的可维护性和灵活性。
3. 信号量(Semaphore)信号量是一种用于进程间同步与互斥的机制,它可以用来解决临界区问题和进程同步问题。
信号量可以用来控制资源的访问顺序,避免竞争条件和死锁等问题。
4. 共享内存(Shared Memory)共享内存是一种高效的进程间通信方式,它允许多个进程直接访问同一块内存区域,从而实现数据的共享。
共享内存可以提高进程间通信的性能,但需要合理控制访问权限,防止数据的冲突和错误。
二、进程间同步(Process Synchronization)进程间同步是指多个进程之间按照特定的顺序执行,保证数据的一致性和正确性。
在多进程环境下,进程之间的并发执行可能导致竞争条件、死锁和资源冲突等问题,进程间同步机制可以解决这些问题。
1. 互斥锁(Mutex)互斥锁是一种二进制的同步机制,用于保护临界区,避免多个进程同时访问共享资源。
进程间通信的几种方法

进程间通信的几种方法进程间通信是计算机系统中一种非常常见的需求,它允许多个进程在不同的地址空间中共享资源,实现信息的共享以及通信。
在计算机系统中,进程间通信的方法会根据使用的网络类型以及网络的连接有所不同。
对于进程间通信的方法,一般可以分为以下几种:(一)共享内存共享内存是一种最简单的进程间通信的方式,也是当今使用最为普遍的进程间通信方法。
在此方法中,多个进程可以访问共享内存区域,这样它们就可以直接在内存中进行通信,而且支持多个进程同时读取和写入内存中的数据,能满足多样化的通信需求,从而提高了系统的效率。
但是,由于这种方法不能实现两个进程之间的“双向”通信,因此它只能适用于一些特定的应用场景,而不能满足一般的进程间通信需求。
(二)消息传递消息传递是进程之间通信的常见方法,它允许两个进程之间进行双向通信,同时还能可靠地传输数据。
在消息传递中,多个进程可以通过将自己的传输内容发送到指定的消息服务器来实现进程间通信。
消息服务器会将这些内容发送到另一个进程,以便双方进行通信。
简单的消息传递本质上是一种客户端/服务器架构,而处理多个进程之间的通信时,可以使用一种名为“发布/订阅”的模型。
在这种模型中,发送者会将消息(即发布)发布到消息服务器上,而接收者(即订阅)可以订阅消息服务器上的那些发布消息。
(三)管道(PIPES)管道是另一种常用的进程间通信模式,它可以实现进程间的双向通信。
在管道模式中,多个进程共享一个双向管道,它们可以在这个双向管道上进行双向通信,也就是说,管道的一端可以用来发送数据,另一端可以用来接收数据。
与消息传递不同,管道不需要使用额外的服务器,因此它可以更快地传输数据,但是它也有很大的局限性,无法跨越网络,仅限于同一台机器上的多个进程之间的通信。
(四)信号量信号量是一种重要的进程间通信机制,它可以用来实现同步和互斥操作,使多个进程都能够按照规定的方式来完成工作,从而实现协作和通信。
信号量原理是通过一个数值来控制多个进程对共享资源的访问,当这个数值为正时,它允许多个进程访问共享资源,当这个数值为0时,它就不允许多个进程访问共享资源。
IT面试题:进程间的通信方式有哪几种

进程间的通信方式,其实我们一直在用它,但是我们都不会去注意它。
如果碰到面试官问你知道多少种进程间的通信方式,估计很多人都会有点懵。
今天我们就来总结下进程间的通信方式有哪些。
进程间通信的7种方式:1、管道/匿名管道(管道)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。
只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
(1)管道的实质:管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据,管道一端的进程顺序的将数据写入缓冲区,另一端的进程则顺序的读出数据。
该缓冲区可以看做是一个循环队列,读和写的位置都是自动增长的,不能随意改变,一个数据只能被读一次,读出来以后在缓冲区就不复存在了。
当缓冲区读空或者写满时,有一定的规则控制相应的读进程或者写进程进入等待队列,当空的缓冲区有新数据写入或者满的缓冲区有数据读出来时,就唤醒等待队列中的进程继续读写。
(2)管道的局限:管道的主要局限性正体现在它的特点上:①只支持单向数据流;②只能用于具有亲缘关系的进程之间;③没有名字;④管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小);⑤管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令,或记录)等等;2、有名管道(FIFO)匿名管道,由于没有名字,只能用于亲缘关系的进程间通信。
为了克服这个缺点,提出了有名管道(FIFO)。
有名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以有名管道的文件形式存在于文件系统中,这样,即使与有名管道的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过有名管道相互通信,因此,通过有名管道不相关的进程也能交换数据。
操作系统的进程间通信与同步

操作系统的进程间通信与同步进程是计算机系统中的基本执行单位,当多个进程同时运行时,它们之间需要进行通信和同步,以保证数据的正确性和系统的稳定性。
在操作系统中,进程间通信与同步是非常重要的概念和技术,本文将对其进行深入探讨。
一、进程间通信的概念进程间通信(Inter-Process Communication,简称IPC)是指进程之间交换数据和信息的机制和技术。
在现代操作系统中,进程往往是相互独立的,拥有自己的地址空间和资源,它们之间要进行数据传输、共享资源和协同工作,就需要使用进程间通信来实现。
进程间通信的目的是使进程能够共享数据、进行信息交换,并能够相互协调工作,以达到系统整体的高效和稳定。
二、进程间通信的方式在操作系统中,常见的进程间通信方式包括管道、消息队列、共享内存和信号量等。
1. 管道(Pipe):管道是最基本的进程间通信方式之一,它是一种半双工的通信方式,具有先进先出的特点。
在管道中,一个进程作为数据的生产者,而另一个进程则作为数据的消费者。
管道可以实现单向数据流的传输,一般用于父子进程或者兄弟进程之间的通信。
2. 消息队列(Message Queue):消息队列是一种可以实现进程间异步通信的机制,它的通信方式基于消息缓冲区。
发送方将消息放入消息队列中,而接收方则从消息队列中读取消息。
消息队列可以实现多对多的进程间通信,并且具有消息的缓冲和异步通信的优势。
3. 共享内存(Shared Memory):共享内存是一种高效的进程间通信方式,它允许多个进程共享同一块物理内存。
在共享内存中,多个进程可以直接读写共享的内存区域,从而实现数据的共享和同步。
共享内存适用于需要频繁读写共享数据的进程间通信场景。
4. 信号量(Semaphore):信号量是一种用于进程间同步和互斥的机制,它可以控制对共享资源的访问。
通过对信号量进行加锁和解锁操作,多个进程可以实现对资源的互斥访问,从而避免竞争和冲突。
信号量在进程同步和互斥中起到了重要的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows进程间各种通信方式浅谈1、Windows进程间通信的各种方法进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。
多进程/多线程是Windows操作系统的一个基本特征。
Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。
正因为使用Win32 API进行进程通信方式有多种,如何选择恰当的通信方式就成为应用开发中的一个重要问题,下面本文将对Win32中进程通信的几种方法加以分析和比较。
2、进程通信方法2.1 文件映射文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。
因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。
Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。
通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。
应用程序有三种方法来使多个进程共享一个文件映射对象。
(1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。
(2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。
第二个进程可通过这个名字打开此文件映射对象。
另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。
(3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。
第二个进程复制该句柄就取得对该文件映射对象的访问权限。
文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。
但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步。
2.2 共享内存Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。
进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。
由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。
a.设定一块共享内存区域HANDLE CreateFileMapping(HANDLE,LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR)// 产生一个file-mapping核心对象LPVOID MapViewOfFile(HANDLE hFileMappingObject,DWORD dwDesiredAcess,DWORD dwFileOffsetHigh,DWORD dwFileOffsetLow,DWORD dwNumberOfBytesToMap);得到共享内存的指针b.找出共享内存决定这块内存要以点对点(peer to peer)的形式呈现每个进程都必须有相同的能力,产生共享内存并将它初始化。
每个进程都应该调用CreateFileMapping(), 然后调用GetLastError().如果传回的错误代码是 ERROR_ALREADY_EXISTS,那么进程就可以假设这一共享内存区域已经被别的进程打开并初始化了,否则该进程就可以合理的认为自己排在第一位,并接下来将共享内存初始化。
还是要使用client/server架构中只有server进程才应该产生并初始化共享内存。
所有的进程都应该使用HANDLE OpenFileMapping(DWORD dwDesiredAccess,BOOL bInheritHandle,LPCTSTR lpName);再调用MapViewOfFile(),取得共享内存的指针c.同步处理(Mutex)d.清理(Cleaning up)BOOL UnmapViewOfFile(LPCVOID lpBaseAddress);CloseHandle()2.3 匿名管道管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。
管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。
匿名管道(Anonymous Pipe)是在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。
通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写端点句柄,然后实现通信。
父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程。
这些子进程可以使用管道直接通信,不需要通过父进程。
匿名管道是单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间。
2.4 命名管道命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。
不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。
命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,不过如果要同时和多个进程通信它就力不从心了。
2.5 邮件槽邮件槽(Mailslots)提供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。
其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。
进来的消息一直放在邮件槽中,直到服务器进程读取它为止。
一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。
通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。
广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。
邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP 协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。
不过邮件槽有简化的编程接口和给指定网络区域内的所有计算机广播消息的能力,所以邮件槽不失为应用程序发送和接收消息的另一种选择。
2.6 剪贴板剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径。
当用户在应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。
然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式。
剪贴板是一个非常松散的交换媒介,可以支持任何数据格式,每一格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是Win32 API定义的常量;对非标准格式可以使用Register Clipboard Format函数注册为新的剪贴板格式。
利用剪贴板进行交换的数据只需在数据格式上一致或都可以转化为某种格式就行。
但剪贴板只能在基于Windows的程序中使用,不能在网络上使用。
2.7 动态数据交换动态数据交换(DDE)是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。
应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。
DDE和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。
但它们的数据传输机制却不同,一个明显区别是剪贴板操作几乎总是用作对用户指定操作的一次性应答-如从菜单中选择Paste命令。
尽管DDE也可以由用户启动,但它继续发挥作用一般不必用户进一步干预。
DDE有三种数据交换方式:(1) 冷链:数据交换是一次性数据传输,与剪贴板相同。
(2) 温链:当数据交换时服务器通知客户,然后客户必须请求新的数据。
(3) 热链:当数据交换时服务器自动给客户发送数据。
DDE交换可以发生在单机或网络中不同计算机的应用程序之间。
开发者还可以定义定制的DDE数据格式进行应用程序之间特别目的IPC,它们有更紧密耦合的通信要求。
大多数基于Windows的应用程序都支持DDE。
2.8 对象连接与嵌入应用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。
例如,OLE支持的字处理器可以嵌套电子表格,当用户要编辑电子表格时OLE库可自动启动电子表格编辑器。
当用户退出电子表格编辑器时,该表格已在原始字处理器文档中得到更新。
在这里电子表格编辑器变成了字处理器的扩展,而如果使用DDE,用户要显式地启动电子表格编辑器。
同DDE技术相同,大多数基于Windows的应用程序都支持OLE技术。
2.9 动态连接库Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题。
虽然可以通过DLL进行进程间数据共享,但从数据安全的角度考虑,我们并不提倡这种方法,使用带有访问权限控制的共享内存的方法更好一些。
2.10 远程过程调用Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。
RPC既可以在单机不同进程间使用也可以在网络中使用。
由于Win32 API提供的RPC服从OSF-DCE (Open Software Foundation Distributed Computing Environment)标准。
所以通过 Win32 API编写的RPC应用程序能与其它操作系统上支持DEC的RPC 应用程序通信。
使用RPC开发者可以建立高性能、紧密耦合的分布式应用程序。
2.11 NetBios函数Win32 API提供NetBios函数用于处理低级网络控制,这主要是为IBM NetBios系统编写与Windows的接口。
除非那些有特殊低级网络功能要求的应用程序,其它应用程序最好不要使用NetBios函数来进行进程间通信。
2.12 SocketsWindows Sockets规范是以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例定义的一套Windows下的网络编程接口。