日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 进程间通讯详解五

發布時間:2025/3/15 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 进程间通讯详解五 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
msgrcv函數 ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg); --功能:是從一個消息隊列接收消息 --參數:msqid:由msgget函數返回的消息隊列標識碼msgp:是一個指針,指針指向準備接收的消息msgsz:是msgp指向的消息長度,這個長度不含保存消息類型的那個long int長整型msgtype:它可以實現接收優先級的簡單形式msgflg:控制著隊列中沒有相應類型的消息可供接收時將要發生的事 --成功返回實際放到接收緩沖區里的字符個數(不包含保存消息類型的那個long int 長整型),失敗返回-1并且設置errno --msgtype=0返回隊列第一條信息 --msgtype>0返回隊列第一條類型msgtype的消息 --msgtype<0返回隊列第一條類型小于等于msgtype絕對值得消息,并且是滿足條件的消息類型最小的消息 --msgflg=IPC_NOWAIT,隊列沒有可讀消息不等待,直接返回RNOMSG錯誤, --msgflg=0,隊列有可讀消息,直接讀取,沒有可讀消息,繼續等待,直到有消息過來再接收。 --msgflg=MSG_NOERROR,消息大小超過msgsz時被截斷 --msgtype>0且msgflg=MSG_EXCEPT,接收類型等于msgtype的第一條信息。 //消息隊列--msgrcv()函數 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>//接收消息的結構體 struct msgbuf {long mtype; /* message type, must be > 0 */char mtext[1024]; /*這是占位符,由程序員自己決定發送消息的數組長度 */ };int main(int arg, char * args[]) {int ret = 0;if (arg < 2){printf("please print one params !\n");return -1;}int type=atoi(args[1]);int msqid = msgget(0x1234, 0666);if (msqid == -1){perror("msgget() err");return -1;}printf("訪問消息隊列成功!msqid=%d\n", msqid);//接收消息struct msgbuf buf2;memset(&buf2, 0, sizeof(buf2));ret = msgrcv(msqid, &buf2, 1024, type, 0);if (ret == -1){perror("msgrcv() err");return -1;}printf("mtext=%s\n", buf2.mtext);return 0; }

?

轉載于:https://www.cnblogs.com/zhanggaofeng/p/6201907.html

總結

以上是生活随笔為你收集整理的Linux 进程间通讯详解五的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。