#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的接收資料視窗...