多工併發亂記第三天(程序間的通訊之IPC)

2021-09-26 21:08:57 字數 1342 閱讀 1598

程序間的通訊:ipc(in process connect)

訊息佇列,共享記憶體,訊號量統稱sytrem-v ipc

int key = ftok(const *char pathname,int proj_id )

引數一:路徑 引數二:任意整數

返回值:生成的健值(具有唯一性) 失敗返回-1

1.共享記憶體(shm)

使用步驟:

(1)獲取共享記憶體物件的id.

int id=shmget(key_t key,size_t size,int shm***)//健值,大小,許可權

返回值:成功返回共享記憶體id,失敗返回-1

(2)將共享記憶體對映到虛擬空間的某個區域

void *=shmat(int id,null,int shm***)//共享記憶體id,null—表示讓系統自動分配,記憶體許可權,一般用0

不能設定成只寫

(3)不使用時,解除對映

shmdt(const void *shmaddr)

(4)不需要就刪除.

ipcs用法

ipcs -a 是預設的輸出資訊 列印出當前系統中所有的程序間通訊方式的資訊

ipcs -m 列印出使用共享記憶體進行程序間通訊的資訊

ipcs -q 列印出使用訊息佇列進行程序間通訊的資訊

ipcs -s 列印出使用訊號進行程序間通訊的資訊

輸出格式的控制

ipcs -t 輸出資訊的詳細變化時間

2.訊息佇列

(1)建立訊息佇列

msgget(hey_t key,int msg***)

(2)準備存放訊息的結構體

struct msgbuf

(3)傳送訊息

msgsend()/msgrecv()

3.執行緒

(1)建立執行緒

pthread_t tid;

pthread_create(&tid,null,fnn,null)

執行緒的退出

pthread_exit(null)

執行緒屬性

-lpthread

(2)設定分離屬性

pthread_attr_setdetachstate()//引數一:執行緒屬性變數 引數二:分離/結合

4.訊號量

(1)建立訊號量

semget(key, nsem,sem***)//健值,訊號量個數,許可權

(2)將訊號量取出和放入(pv操作)

semop(int semid,struct sembuf sops,unsigned nsops)

開始是接合屬性,遇到pthread_join 後主執行緒阻塞,然後子執行緒設定分離屬性,然後主線程等待子執行緒結束後才會繼續執行

第三天,努力!!

第三天了,不錯不錯,基本上按自己的計畫進行著,雖然工作還是沒找到,不過也不再那麼的怕了,慢慢來吧,其實也沒太多時間了 今天早上十點才,真的覺得自己太不像話了,不過我一覺醒來就那個時候了,我的手機每天的鬧鐘是7 30不過好像從來聽不見它響,哈哈 明天希望能早點起,明天北京工體有乙個大型的招聘會,可以去...

杭州第三天

一樣的時間起床,一樣的時間去吃早飯,坐在一樣的位置享受完幾乎一樣的陽光和一根煙以後,我開始了在杭州ut的又一天工作。上午按照計畫重新安裝oracle資料庫,由於一邊安裝一邊給旁邊的兩個同事作簡單的解釋,所以到了在中午吃飯以前只是安裝完了軟體部分。ut的食堂有兩層,每個月的餐費都是直接打入員工卡中,所...

實習第三天

sharedpreferences是android平台上乙個輕量級的儲存類,簡單的說就是可以儲存一些我們需要的變數資訊 例如 程式聲音開關 大小,設定自動登入記住賬號對賬號 密碼的儲存,對預設事項的紀錄等。1 intent bundle的傳送方式 2 利用sharedpreferences acti...