一般我们写的程序都是以单个进程的方式来运行的,比较少涉及到多进程。特别是在windows下,因为Windows是按照线程来分配CPU时间片的,线程是最小的调度单位,所以在Windows下更多的用到多线程,在同一个进程里创建多个线程来执行不同的任务,达到充分利用CPU的目的。线程之间可以共享进程的资源,比如内存、变量,但是多线程有一个不好的地方,由于这些线程是在同一个进程空间里执行,所以只要一个线程奔溃,整个进程也就奔溃了,程序就退出了。多进程由于是在不同的进程空间里,一个进程奔溃,不会影响到其它的进程,但是进程之间要交换信息的话,就比较麻烦了,不像多线程可以简单的通过一个全局变量来通讯。为了解决进程间交换信息的问题,所以操作系统提供了进程间通讯(IPC)的技术。

1、管道(Pipe)
一个进程往管道里写数据,另一个进程从管道里取数据。管道又可以分为匿名管道,匿名管道只能在父、子进程之间通讯。还有一种命名管道(named pipes),Linux下叫做FIFO,命名管道可以在任意进程之间通讯。

2、油槽(Slot)
Linux下叫做消息队列(Message)。就像我们日常通过邮局寄送信件。一个进程寄送,另一个进程接收。

3、消息(Message)
Linux下叫做信号(Signal)。Windows是消息驱动的,进程可以调用WIN32 API函数SendMessage或者PostMessage向另一个进程发送消息,Windows系统也可以向进程发送消息。
Linux下可以通过kill、raise、alarm、pause这些信号处理系统调用来实现。

4、共享内存(Shared Memory)
进程之间通过共享一块内存的方式来交换数据。

5、Socket
通常我们使用socket来进行网络通讯,一方作为客户机,另一方作为服务器。同样的,socket也可以作为进程之间通讯的一种方式。

以上方式是Windows和Linux共有的通讯方式。Windows下进程之间还可以通过系统剪贴板的方式来通讯,一个进程把数据复制到剪贴板,另一个进程把数据从剪贴板上粘贴过来。

其实除了以上这些比较常用的通讯方式,个人认为还可以通过文件的方式。一个进程把数据写入文件,另一个进程从文件里读取数据。

当然还可以通过一个中间件的方式,比如Windows下的msmq(消息队列)中间件,Apache上也提供了一个用Java写的开源消息中间件Apache ActiveMQ。

转载于:https://www.cnblogs.com/weiqubo/archive/2011/03/08/1976865.html

Windows与Linux下进程间通信技术比较相关推荐

  1. Linux下进程间通信概述

    1. Linux下进程间通信概述 P83-P84 将第一页和第二页合并起来讲了 引言:前面我们学习了一下进程,我们知道多,进程间的地址空间相对独立.进程与进程间不能像线程间通过全局变量通信. 如果想进 ...

  2. linux实现单机qq_Linux后台服务器开发——Linux下进程间通信的方式有哪些?

    Linux下进程间通信的方式有: 管道 消息队列 信号 信号量 共享存储 套接字 一.管道 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道 PIPE无名管道 详情参阅:ht ...

  3. Windows和Linux下的MTU查看和修改

    Windows和Linux下的MTU查看和修改 Windows下: https://jingyan.baidu.com/article/ad310e80ff9bf81849f49ea9.html li ...

  4. YOLOv4:目标检测(windows和Linux下Darknet 版本)实施

    YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and L ...

  5. windows增量到linux,Beyond Compare 3在windows和linux下实现提取增量包

    需求:要实现在windows或linux下的自动对比打得WAR包,进行增量发布(缺点就是只能增量部署增加的和修改的,对删除的不能进行减量部署) 具体实现:利用Beyond Compare 3来实现,功 ...

  6. Windows和Linux下通用的线程接口

    对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...

  7. python在windows和linux_python在windows和linux下获得本机本地ip地址方法小结

    本文实例总结了python在windows和linux下获得本机本地ip地址方法.分享给大家供大家参考.具体分析如下: python的socket包含了丰富的函数和方法可以获得本机的ip地址信息,so ...

  8. Linux下进程间通信的六种机制详解

    linux下进程间通信的几种主要手段:        1.管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具 ...

  9. synergy在Windows和Linux下使用全攻略(多台PC共享一套键盘鼠标)

    synergy在Windows和Linux下使用全攻略(多台PC共享一套键盘鼠标) 标签: windowslinuxkeyboard服务器测试 2011-11-26 14:51 6882人阅读 评论( ...

最新文章

  1. 关于与同事相处的一些学问
  2. 我是如何在SQLServer中处理每天四亿三千万记录的
  3. Thinkphp 源码分析
  4. linux 如何查看服务和端口
  5. 揭秘《英雄联盟》客户端更新运行自动化测试
  6. 单选按钮带文字_计算机二级MS office高级应用历年真题操作题文字解析
  7. 说下List接口下的那些类
  8. 面试官:背了几道面试题就敢说熟悉Java源码?我们不招连源码都不会看的人|原力计划...
  9. 二线城市的海归创业路:拥抱还是逃离?
  10. HDU 4380 Farmer Greedy 计算几何+bitset
  11. Windows Server 2008 R2+SQL Server 2014 R2升级到Windows Server 2016+SQL Server 2016
  12. 综合能源系统通用建模及规划方法研究—笔记
  13. Autodesk 3ds Max2020安装说明
  14. 工业机器人编程语言c语言,工业机器人编程语言和编程方式
  15. pcb怎么画边框_PCB设计--PCB画图技巧
  16. RTU设备功能及选型
  17. 如何在html中加入下划线,文档中加入下划线
  18. 秦曾昌人工智能课程---3、机器学习中的哲学
  19. 王者荣耀 -- 上单及装备
  20. 多机型手机外观清洁与检测设备设计

热门文章

  1. linux下kegg注释软件,KEGG功能注释工具 KofamKOALA 安装与使用
  2. 怎么取消苹果手机自动续费_手机腾讯视频的vip怎么取消自动续费?
  3. python中可迭代对象拆包时、怎么赋值给占位符_python3-数据结构和算法 » 1.2 解压可迭代对象赋值给多个变量...
  4. c语言中prime的作用,C语言判断素数prime
  5. 平板安装python_在CentOS上安装Python3的三种方法
  6. java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据
  7. linux memcached 运行,linux下查看Memcached运行状态
  8. SDH与PDH的区别介绍
  9. 【渝粤教育】 国家开放大学2020年春季 2528监督学 参考试题
  10. 【渝粤教育】电大中专电子商务网站建设与维护 (25)作业 题库