程序間通訊(上)基礎函式篇

2021-08-30 19:31:17 字數 4323 閱讀 1655

// printf("%d %d\n",fds[0],fds[1]); //3和4,相當於用兩種方式開啟了1個檔案

pid_t id=fork(); //建立子程序

if(id == 0)

close(fds[1]); //關閉pipe檔案

exit(0);

}

else if(id > 0)

else

}waitpid(id,null,0); //等待子程序退出

int msgid=msgget(_key,flags); //返回訊息佇列的標識碼

if(msgid<0)

return msgid;

}int sendmsg(int msgid,long whotype,char* msg) //傳送訊息,(標識碼,什麼型別,訊息內容)

return 0;

}int recvmsg(int msgid,long recvtype,char* out) //接收訊息,(標識碼,接收型別,存到哪)

strcpy(out,buf.mtext);

return 0;

}void destorymsgqueue(int msgid)

}

#include "comm.h"  //伺服器端

int main()

char buf[1024]=; //緩衝區

while(1)

printf("client# %s\n",buf);

printf("please stdin!\nserver# ");

fflush(stdout);

ssize_t s=read(0,buf,sizeof(buf)-1); //讀輸入到緩衝區中

if(s<0)

buf[s-1]=0;

sendmsg(msgid,server_type,buf); //傳送訊息 (標識碼,伺服器型別,從哪發)

printf("send done! wait recv...\n");

} destorymsgqueue(msgid); //銷毀訊息佇列 (標識碼)

return 0;

}

#include "comm.h"   //使用者端

int main()

; //緩衝區

while(1)

buf[s-1]=0; //把換行符覆蓋掉

sendmsg(msgid,client_type,buf); //(標識碼,使用者型別,內容)

if(!strcmp(buf,"q"))

printf("send done , wait recv...\n");

recvmsg(msgid,server_type,buf); //(標識碼,伺服器型別,放到緩衝區)

int shmid=shmget(_key,size,flags); //開啟共享記憶體(名字,大小,許可權)

if(shmid<0)

return shmid; //返回標識碼

}

#include "shm.h"

int main()

shmdt(addr);

sleep(2);

destoryshm(shmid);

return 0;

}

#include "shm.h"

int main()

shmdt(addr); //解掛(記憶體位址)

sleep(2);

return 0;

}

struct  semphore
#include "comm.h"

static int commsemset(int nums,int flags)

int semid = semget(_key,nums,flags); //建立時nums是訊號量集中訊號量的個數 //訪問時是訊號量集中的第幾號訊號量

if(semid < 0)

return semid;

}int creatsemset(int nums)

int getsemset(int nums)

int initsem(int semid,int nums,int initval)

return 0;

}static int commpv(int semid,int who,int op)

return 0;

}int p(int semid,int who)

int v(int semid,int who)

int destorysemset(int semid)

return 0;

}

#include "comm.h"

int main()

exit(0);

} else

wait(null);

} printf("\n");

destorysemset(semid);

return 0;

}

python 程序間通訊 上

一 使用queue來實現程序間的記憶體共享 coding utf 8 from multiprocessing import process,queue import os,time def f q,n q.put n,hello if name main 此queue不是直接匯入的import q...

實驗四 程序間通訊(上)

一 實驗名稱 實驗四 程序間通訊 上 二 實驗日期 2014 3 20 三 實驗目的 1.通過實驗理解軟中斷訊號機制以及如何通過軟中斷實現父子程序同步 2.通過實驗理解無名管道通訊 四 實驗的步驟和方法 第四次小課程序間通訊 上 第一部分本週大課內容回顧 主要內容 1.軟中斷 2.管道通訊 l 程序...

基礎篇 十四 程序間通訊

在android中提供了四種跨程序通訊的方式。對應於android四大元件 activity content provider broadcastreciever 和service。一 activity被其他程序呼叫。在androidmanifest.xml檔案中註冊 activity時,設定act...