最近看system v訊息佇列,在看到msgsnd()這個函式時,發現了乙個錯誤。(注:我看的是unix網路程式設計卷二:程序間通訊 第二版)
msgsnd()函式:追加一條新訊息到訊息佇列的系統呼叫語法:
#include
int msgsnd(int msqid, const void *ptr, size_t length, int flag);
msqid: 由訊息佇列的識別符號
ptr: 訊息緩衝區指標。
訊息緩衝區結構為:
struct msgbuf message;
msgbuf結構體我們可以自己定義,但必須要有乙個訊息型別type,我們也可以定義成下面這樣:
struct mymesg;};
legth: 訊息資料的長度
flag: 為0表示阻塞方式,設定ipc_nowait 表示非阻塞方式
msgsnd 呼叫成功返回0,不成功返回-1。
msgrcv()函式:從訊息佇列中讀出一條新訊息
#include
int msgrcv(int msqid, void *ptr, size_t length, long type, int flag);
msqid: 由訊息佇列的識別符號
ptr :訊息緩衝區指標。訊息緩衝區結構為:
struct msgbuf {
long mtype;
char mtext[1];
}length: 訊息資料的長度
type: 決定從佇列中返回哪條訊息:
=0 返回訊息佇列中第一條訊息
>0 返回訊息佇列中等於mtype 型別的第一條訊息。
<0 返回mtype<=type 絕對值最小值的第一條訊息。
msg*** 為0表示阻塞方式,設定ipc_nowait 表示非阻塞方式
msgrcv 呼叫成功返回0,不成功返回-1。
函式及函式指標
void int handler 普通的函式宣告 void int handler 函式指標的宣告 即宣告了乙個函式指標,此函式是沒有返回值和形參的函式,即 中的函式。typedef void int handler 用typedef定義一種函式指標的型別,也就是說這裡的int handler 就代...
python函式及方法 python 函式及練習
一 函式的返回值 可以通過人return 來指定函式的返回值 用乙個變數來接收返回值 return 後面跟什麼值,函式就會返回什麼值 在函式中return後的 都不會被執行,return一旦執行,函式自定結束 例如 print jaaj return 3 print 123 print fn fn是...
遞迴函式及memset函式
原始思路 剛開始學習遞迴,開始的思路是直接暴力遞迴,當a,b,c為1 10的計算時還可以計算出結果,但是當數值變大後,一直得不出結果 上網查後得到新的方法 將計算後的資料儲存在三維陣列中,未計算的資料通過遞迴計算得到。以下為 標頭檔案 memory.h memset void s,int ch,si...