孙鑫VC++第17章进程间的通信

                                               第17章、进程间的通信

 

1.      当一个进程启动后,操作系统为其分配4GB的私有地址空间。位于同一个进程中的多个线程共享同一个地址空间,因此线程之间的通信非常简单;

 

2.      四种进程间通信方式:剪切板,匿名管道,命名管道,邮槽;

 

3.      如果某个程序已经打开了剪贴板,则其他应用程序将不能修改剪切板,直到前者调用了CloseClipboard函数。

 

4.      剪切板格式;

 

5.      如果在剪切板上放置的数据过大,就会浪费内存空间,降低对资源的利用率,为了避免这种浪费,就可以采用延迟提交技术;(即直到有其他进程需要数据或者自身进程需要终止运行时再次调用SetClipboardData函数,这时才真正提交数据)

 

6.      首先调用OpenClipboard打开剪切板,如果成功打开,则调用EmptyClipboard函数清空剪切板,释放剪切板上数据的句柄,并将剪切板的所有权分配给当前窗口;

 

在把数据放置到剪切板后之后,一定要记住调用CloseClipboard函数关闭剪贴板,否则其他进程将无法打开剪贴板;

7.      匿名管道是一个未命名的,单向管道,通常用来在一个父进程和一个子进程之间传输数据。

匿名管道只能实现本地机器上两个进程间的通信,而不能实现跨网络的通信;

 

 

8,在这以前的章节中,凡是需要SECURITY_ATTRIBUTES结构体指针的地方,我们传递的都是NULL值,让系统为创建的对象赋予默认的安全描述符,而函数所返回的句柄将不能被子进程所继承。但本章不行;

 

 

9.因为匿名管道没有名称,所以只能在父进程中调用CreateProcess函数创建子进程,将管道的读,写句柄传递给子进程;

 

 

10.四种剪贴板的比较:

 

1.      剪贴板和匿名管道只能实现同一台机器两个进程间的通信,而不能实现跨网络的通信;

2.      而命名管道和邮槽还可以实现网络的进程间通信;

3.      邮槽可以实现一对多通信,而命名管道只能是点对点的单一通信,但是邮槽的缺点是数据量小,通常是在424字节以下,如果数据量大,则采用命名管道来完成;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值