进程之间的通信有哪些

进程之间的通信方式有以下几种:

1、管道

管道分为有名管道和无名管道,其中无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,一般用于两个不同进程之间的通信。有名管道也是一种半双工的通信方式,但它允许无亲缘关系进程间的通信。

2、信号

信号是一种比较复杂的通信方式,信号产生的条件:按键、硬件异常、进程调用kill函数将信号发送给另一个进程、用户调用kill命令将信号发送给其他进程,传递的消息比较少用于通知接收进程某个时间已经发生。

3、信号量

信号量是一个计数器,可以用来控制多个进程对共享资源的访问,它不是用于交换大批数据,而用于多进程之间的同步。它常作为一种锁机制,往往与其他通信机制,如信号量配合使用,来实现进程间的同步和通信。

4、消息队列

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。

5、共享内存

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

6、套接字

套接字可用于不同及其间的进程通信。

进程间通信的目的

1、数据传输

一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。

2、共享数据

多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。

3、通知事件

一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。

4、资源共享

多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制。

5、进程控制

有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

进程通过与内核及其他进程之间的互相通信来协调它们的行为。Linux支持多种进程间通信(IPC)机制,信号和管道是其中的两种。除此之外,Linux还支持System V 的IPC机制(用首次出现的Unix版本命名)。



  • 杩涚▼闂闇瑕佷紶杈撳ぇ閲忔暟鎹,鍚堥鐨勯氫俊鏂瑰紡鏈
    绛旓細1銆佸叡浜唴瀛橀氫俊锛氬叡浜唴瀛樻槸涓绉嶉珮鏁堢殑閫氫俊鏂瑰紡锛屽彲浠ュ湪杩涚▼涔嬮棿鍏变韩鍚屼竴鍧楃墿鐞嗗唴瀛樸傞氳繃鍏变韩鍐呭瓨锛岃繘绋嬪彲浠ュ揩閫熷湴璇诲彇鍜屼慨鏀瑰叡浜殑鏁版嵁锛屼粠鑰屽疄鐜板ぇ閲忔暟鎹殑浼犺緭銆備絾闇瑕佹敞鎰忕殑鏄紝鍏变韩鍐呭瓨浼氬鑷村杩涚▼瀵瑰叡浜暟鎹殑绔炰簤鍜屼簰鏂ラ棶棰橈紝闇瑕侀噰鍙栭傚綋鐨勫悓姝ユ満鍒讹紝濡備俊鍙烽噺銆佷簰鏂ラ噺绛夈2銆绠¢亾閫氫俊锛氱閬撴槸涓绉...
  • 杩涚▼闂撮氫俊鐨鍑犵鏂规硶
    绛旓細杩涚▼闂撮氫俊涓昏鏈変互涓嬪叓绉嶆柟娉曪細绠¢亾锛圥ipe锛夈佸懡鍚嶇閬擄紙Named Pipe锛夈佹秷鎭槦鍒楋紙Message Queue锛夈佷俊鍙凤紙Signal锛夈佸叡浜唴瀛橈紙Shared Memory锛夈佸鎺ュ瓧锛圫ocket锛夈佷俊鍙烽噺锛圫emaphore锛夈佹枃浠堕攣锛團ile Lock锛夈1銆佺閬擄紙Pipe锛夛細绠¢亾鏄竴绉嶅崟鍚戦氫俊鏈哄埗锛屽厑璁镐竴涓繘绋嬪皢鏁版嵁鍐欏叆绠¢亾锛屽彟涓涓繘绋嬪垯鍙互浠...
  • 杩涚▼闂寸殑閫氫俊鏈夊摢浜
    绛旓細1銆绠¢亾pipe 绠¢亾鏄竴绉嶅崐鍙屽伐鐨勯氫俊鏂瑰紡锛屾暟鎹彧鑳藉崟鍚戞祦鍔紝鑰屼笖鍙兘鍦ㄥ叿鏈変翰缂樺叧绯荤殑杩涚▼闂翠娇鐢ㄣ傝繘绋嬬殑浜茬紭鍏崇郴閫氬父鏄寚鐖跺瓙杩涚▼鍏崇郴銆2銆鍛藉悕绠¢亾FIFO 鏈夊悕绠¢亾涔熸槸鍗婂弻宸ョ殑閫氫俊鏂瑰紡锛屼絾鏄畠鍏佽鏃犱翰缂樺叧绯昏繘绋嬮棿鐨勯氫俊銆3銆娑堟伅闃熷垪MessageQueue 娑堟伅闃熷垪鏄敱娑堟伅鐨勯摼琛紝瀛樻斁鍦ㄥ唴鏍镐腑骞剁敱娑堟伅闃熷垪鏍囪瘑绗...
  • 杩涚▼涔嬮棿鐨勯氫俊鏈夊摢浜
    绛旓細杩涚▼涔嬮棿鐨勯氫俊鏂瑰紡鏈変互涓嬪嚑绉嶏細1銆绠¢亾 绠¢亾鍒嗕负鏈夊悕绠¢亾鍜屾棤鍚嶇閬锛屽叾涓棤鍚嶇閬撴槸涓绉嶅崐鍙屽伐鐨勯氫俊鏂瑰紡锛屾暟鎹彧鑳藉崟鍚戞祦鍔紝鑰屼笖鍙兘鍦ㄥ叿鏈変翰缂樺叧绯荤殑杩涚▼闂翠娇鐢紝涓鑸敤浜庝袱涓笉鍚岃繘绋嬩箣闂寸殑閫氫俊銆傛湁鍚嶇閬撲篃鏄竴绉嶅崐鍙屽伐鐨勯氫俊鏂瑰紡锛屼絾瀹冨厑璁告棤浜茬紭鍏崇郴杩涚▼闂寸殑閫氫俊銆2銆佷俊鍙 淇″彿鏄竴绉嶆瘮杈冨鏉傜殑...
  • 杩涚▼闂寸殑閫氫俊鏈夊摢浜
    绛旓細1銆佹棤鍚绠¢亾锛坧ipe锛夛細绠¢亾鏄竴绉嶅崐鍙屽伐鐨勯氫俊鏂瑰紡锛屾暟鎹彧鑳藉崟鍚戞祦鍔紝鑰屼笖鍙兘鍦ㄥ叿鏈変翰缂樺叧绯荤殑杩涚▼闂翠娇鐢ㄣ傝繘绋嬬殑浜茬紭鍏崇郴閫氬父鏄寚鐖跺瓙杩涚▼鍏崇郴銆2銆侀珮绾х閬擄紙popen锛夛細灏嗗彟涓涓▼搴忓綋鍋氫竴涓柊鐨勮繘绋嬪湪褰撳墠绋嬪簭杩涚▼涓惎鍔紝鍒欏畠绠楁槸褰撳墠绋嬪簭鐨勫瓙杩涚▼锛岃繖绉嶆柟寮忔垜浠垚涓洪珮绾х閬撴柟寮忋3銆佹湁鍚嶇閬擄紙named...
  • 杩涚▼闂撮氫俊鐨鏂瑰紡鏈夊摢浜,鍚勮嚜鐨勪紭缂虹偣
    绛旓細杩涚▼闂撮氫俊涓昏鍖呮嫭绠¢亾, 绯荤粺IPC(Inter-Process Communication锛岃繘绋嬮棿閫氫俊)(鍖呮嫭娑堟伅闃熷垪,淇″彿,鍏变韩瀛樺偍), 濂楁帴瀛(SOCKET).绠¢亾鍖呮嫭涓夌:1)鏅氱閬揚IPE, 閫氬父鏈変袱绉嶉檺鍒,涓鏄崟宸,鍙兘鍗曞悜浼犺緭;浜屾槸鍙兘鍦ㄧ埗瀛愭垨鑰呭厔寮熻繘绋嬮棿浣跨敤.2)娴佺閬搒_pipe: 鍘婚櫎浜嗙涓绉嶉檺鍒,涓哄崐鍙屽伐锛屽彲浠ュ弻鍚戜紶杈.3)鍛藉悕...
  • 杩涚▼閫氫俊鐨浠嬬粛
    绛旓細1銆佽繘绋嬮棿閫氫俊灏辨槸鍦ㄤ笉鍚岃繘绋嬩箣闂翠紶鎾垨浜ゆ崲淇℃伅锛岄偅涔堜笉鍚岃繘绋嬩箣闂村瓨鍦ㄧ潃浠涔堝弻鏂归兘鍙互璁块棶鐨勪粙璐ㄥ憿锛熻繘绋嬬殑鐢ㄦ埛绌洪棿鏄簰鐩哥嫭绔嬬殑锛屼竴鑸岃█鏄笉鑳戒簰鐩歌闂殑锛屽敮涓鐨勪緥澶栨槸鍏变韩鍐呭瓨鍖恒2銆佹偍濂斤紝杩涚▼闂撮氫俊鏂瑰紡鏈绠¢亾銆淇″彿閲忋佷俊鍙枫娑堟伅闃熷垪銆佸叡浜唴瀛樸濂楁帴瀛鍏銆3銆佺閬損ipe绠¢亾鏄竴绉嶅崐鍙屽伐鐨...
  • 杩涚▼閫氫俊鏈鍝笁绉嶅熀鏈被鍨?
    绛旓細(2)鍒╃敤绯荤粺鍐呮牳鎻愪緵鐨杩涚▼闂撮氫俊(IPC)宸ュ叿瀹炵幇,IPC鏄敱娑堟伅浼犻掔郴缁熸彁渚涚殑.绗簩绉嶆柟寮忚骞挎硾搴旂敤,灏ゅ叾鏄熀浜庝簰鑱旂綉鐨杩涚▼閫氫俊鏈哄埗.瀹冨張鍙互鍒掑垎涓虹洿鎺ラ氫俊鍜岄棿鎺ラ氫俊.鍓嶈呴渶瑕侀氫俊鍙屾柟鏄庣‘鍛戒护鎺ユ敹鑰呭拰鍙戦佽,鑰屽悗鑰呴氳繃绔彛(鎴栭偖绠)杩涜鍙戦.璇︾粏璧勬枡鍙互鍙傞槄缇庡浗Abraham Silberschatz鍗氬+鎵钁楃殑<Operating ...
  • Linux杩涚▼闂撮氫俊鐨鏂瑰紡鏈夊摢浜
    绛旓細绗竴绉嶏細绠¢亾閫氫俊 涓や釜杩涚▼鍒╃敤绠¢亾杩涜閫氫俊鏃讹紝鍙戦佷俊鎭殑杩涚▼绉颁负鍐欒繘绋;鎺ユ敹淇℃伅鐨勮繘绋嬬О涓鸿杩涚▼銆傜閬撻氫俊鏂瑰紡鐨勪腑闂翠粙璐ㄥ氨鏄枃浠讹紝閫氬父绉拌繖绉嶆枃浠朵负绠¢亾鏂囦欢锛屽畠灏卞儚绠¢亾涓鏍峰皢涓涓啓杩涚▼鍜屼竴涓杩涚▼杩炴帴鍦ㄤ竴璧凤紝瀹炵幇涓や釜杩涚▼涔嬮棿鐨勯氫俊銆傚啓杩涚▼閫氳繃鍐欏叆绔線绠¢亾鏂囦欢涓啓鍏ヤ俊鎭;璇昏繘绋嬮氳繃璇诲嚭绔粠...
  • 杩涚▼闂撮氫俊鐨涓昏鍒嗙被
    绛旓細FAQ2: 绠¢亾鐨勪娇鐢ㄦ柟娉?绛: 涓昏鏈変笅闈㈠嚑绉嶆柟娉: 1)pipe, 鍒涘缓涓涓閬,杩斿洖2涓閬撴弿杩扮.閫氬父鐢ㄤ簬鐖跺瓙杩涚▼涔嬮棿閫氳. 2)popen, pclose: 杩欑鏂瑰紡鍙繑鍥炰竴涓閬撴弿杩扮,甯哥敤浜閫氫俊鍙︿竴鏂规槸stdin or stdout; 3)mkpipe:鍛藉悕绠¢亾, 鍦ㄨ澶氳繘绋嬩箣闂磋繘琛屼氦浜.FAQ3:...
  • 扩展阅读:strlen和sizeof的区别 ... 进程间通信的几种方法 ... 进程间通信的5种方式 ... 进程之间的通信 ... 两个进程之间如何通信 ... 文件分配的方式 ... 进程通信的三个方式 ... 通信发展的四个阶段 ... 实现进程到进程之间的通信 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网