函式msgsnd 及函式msgrcv 引數詳解

2021-09-05 12:15:52 字數 1001 閱讀 8584

最近看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...