程序間通訊

2021-10-05 20:36:24 字數 1759 閱讀 6375

一、程序間通訊本質

父子程序共用核心,中間需要一塊buf的區域連線來通訊。

二、管道

1.只作用於有血緣關係的程序之間

2.pipe函式建立管道,mkfifo 命令也可以建立管道

3.管道為雙向半雙工通訊

4.實現原理:核心借助環形佇列機制,使用核心緩衝區實現

①它是偽檔案 ②管道中資料只能一次讀取 ③資料在管道中單向流動 ④資料不可反覆讀 ⑤自己寫,不能自己讀

5.pipe函式

①建立並開啟管道

②int pipe(int fd[2]) fd[0]:讀端 fd[1]:寫端

返回值: 成功:0 失敗:-1

6.管道的讀寫行為

①讀管道

a.管道有資料:read返回實際讀到的值

b.管道無資料:i.無寫端:read返回0(just like 讀到檔案尾)

ii。有寫端:read阻塞等待

②寫管道

a.無讀端:異常終止:sigpipe訊號導致

b.有讀端:i.管道已滿:阻塞等待 ii:管道未滿:返回寫出的位元組個數

6.管道緩衝區

①大小:預設1024

liyiheng@liyiheng-pc:

~/learngit/teamb/liyiheng/linuxc$ ulimit -a

core file size (blocks,

-c)0

data seg size (kbytes,

-d) unlimited

scheduling priority (

-e)0

file size (blocks,

-f) unlimited

pending signals (

-i)30863

max locked memory (kbytes,

-l)64

max memory size (kbytes,

-m) unlimited

open files (

-n)1024

pipe size (

512 bytes,

-p)8

posix message queues (bytes,

-q)819200

real-time priority (

-r)0

stack size (kbytes,

-s)8192

cpu time (seconds,

-t) unlimited

max user processes (

-u)30863

virtual memory (kbytes,

-v) unlimited

file locks (

-x) unlimited

php程序間通訊 yoc PHP程序間通訊

php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...

程序間通訊

實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用wm copydata。如果需要在程序a傳遞資料到程序b,簡單的實現如下 在程序a中 cstring strdatatosend t hello 需要傳遞的資料 hwnd hwndreceived 程序b的接收資料視窗...

程序間通訊

最近做專案遇到奇怪的問題,我在主線程中建立乙個工作執行緒。在工作執行緒中用sendmessage向主線程傳送訊息,通知主線程操作office 物件。getactiveobject時提示 hr 0x8001010d 因為應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫。我把sendmessag...