程序間通訊是什麼?如何實現程序間的通訊

2021-10-04 13:27:48 字數 3441 閱讀 1132

#include

intpipe

(fd[2]

);//匿名管道

#include

#include

#include

#include

intmain()

int id =

fork()

;//建立程序

if(id >0)

//父程序

buf[s]=0

;//將讀到的最後乙個字元的後乙個字元設定為 \0,方便列印

printf

("%s\n"

,buf);}

else

if( id ==0)

//子程序}}

else

//建立程序失敗

return0;

}

相關函式

int

fifo

(const

char

*filename,mode_t mode)

;

#include//這個程序負責讀取管道的資料

#include#include#include#include#include#define fifo "./myfifo"

int main()

char buf[1024];

int fd = open(fifo,o_rdonly);

if(fd > 0)

else}}

else

close(fd);

return 0;

}

#include

//這個程序負責往管道裡面寫資料

#include

#include

#include

#include

#include

#include

#define fifo "./myfifo"

intmain()

while(1

)else

}close

(fd)

;return0;

}

int

shmget

(key_t key,size_t size,

int shm***)

;//申請共享記憶體

//key :共享記憶體段的名字,必須是唯一的

//size:你所要開闢的共享記憶體的大小

//shm*** :許可權,具體是啥,可以檢視man手冊

void

*shmat

(int shmid,

const

*shmaddr,

int shm***)

;//掛接共享記憶體

//shmid :在進行shmget的時候,返回的值就是id

//shm***: 也是許可權 兩個值 shm_rnd和shm_rdonly

intshmdt

(const

void

*shmaddr)

;//刪除掛接共享記憶體

//shmaddr:由shmat所返回的指標

intshmctl

(int shmid,

int cmd,

struct shmid_ds *buf)

;//刪除共享記憶體

//shmid:有shmget所獲得的標識

//cmd:要採取的動作 三個 有:ipc_stat ipc_set ipc_rmid,最後乙個是刪除共享記憶體段

//指向乙個儲存著共享記憶體模式狀態和訪問許可權的資料結構,一般是null

#include

#include

#include

#include

#include

#define path_name "/tmp"

#define proj_id 0x6666

intmain()

int shm_id =

shmget

(key,

4096

,ipc_creat)

;//建立乙個共享記憶體,如果這個共享記憶體已經存在了,就返回這個共享記憶體,如果不存在,就返回錯誤

if(shm_id ==-1

)void

*str =

shmat

(shm_id,

null,0

);//掛接共享記憶體if(

(signed

long

long

)str <0)

int i;

for(i =

0;i <

26;i++

)return0;

}

#include

#include

#include

#include

#include

#include

#define path_name "/tmp"

#define proj_id 0x6666

intmain()

int shm_id =

shmget

(key,

4096

,ipc_creat|ipc_excl)

;//建立共享記憶體,如果這個共享記憶體不存在就建立它,然後返回

if(shm_id ==-1

)void

*str =

shmat

(shm_id,

null,0

);//掛接共享記憶體if(

(signed

long

long

)str <0)

int i =0;

sleep(3

);for(i =

0;i <

26; i++

)shmdt

(str)

;shmctl

(shm_id,ipc_rmid,

null);

}

以上就是程序間通訊的一部分東西了,包括匿名管道,命名管道,共享記憶體

如何實現程序間通訊

使用共享記憶體 物理記憶體 的步驟 1 建立共享記憶體 2 對映到虛擬位址空間 3 把資料寫到共享記憶體 4 解除對映並銷毀 為避免同一時間多個程序訪問同一記憶體,我們必須給共享記憶體加鎖,實現程序同步。加鎖過程 1 建立訊號量 2 初始化訊號量 3 進行p操作 拔鑰匙 和v操作 插鑰匙 4 程式執...

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

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

程序間通訊

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