linux查看隊列 msg,linux第10天 msg消息隊列

cat /proc/sys/kernel/msgmax最大消息長度限制

cat /proc/sys/kernel/msgmnb消息隊列總的字節數

cat /proc/sys/kernel/msgmni消息條目數

消息隊列綜合案例

//server

#include

#include

#include

#include

#include

#include

#include

#include

#define ERR_EXIT(m)

do

{

perror(m);

}

while(0);

struct msgbuf {

long mtype; /* message type, must be > 0 */

char mtext[1024]; /* message data */

};

int main()

{

struct msgbuf revbuf;

int key = 0;

int msgid = 0;

int ret = 0;

int pid= 0;

key = ftok("./", '2');

if (key < 0)

ERR_EXIT("ftok");

//獲取消息隊列

ret = msgget(key, 0666 | IPC_CREAT | IPC_EXCL);

if (ret < 0)

{

if (errno == EEXIST) //如果消息隊列已存在

msgid = msgget(key, 0666);

else

ERR_EXIT("msgget:");

}

else

msgid = ret;

//設置發送buf

memset(&revbuf, 0, sizeof(revbuf));

revbuf.mtype = 1; //接收方總是接收類型1

while (1)

{

ret = msgrcv(msgid, &revbuf, sizeof(revbuf.mtext), 1, 0);

if (ret < 0)

ERR_EXIT("msgrcv:");

fputs(revbuf.mtext + 4, stdout);

pid = *((int *)(revbuf.mtext));

revbuf.mtype = pid;

ret = msgsnd(msgid, &revbuf, ret, IPC_NOWAIT);

if (ret < 0)

ERR_EXIT("msgsnd");

}

return 0;

}

//clt

#include

#include

#include

#include

#include

#include

#include

#include

#define ERR_EXIT(m)

do

{

perror(m);

}

while(0);

struct msgbuf {

long mtype; /* message type, must be > 0 */

char mtext[1024]; /* message data */

};

int main()

{

struct msgbuf sndbuf;

struct msgbuf revbuf;

int key = 0;

int msgid = 0;

int ret = 0;

int pid= 0;

key = ftok("./", '2');

if (key < 0)

ERR_EXIT("ftok");

//獲取消息隊列

ret = msgget(key, 0666 | IPC_CREAT | IPC_EXCL);

if (ret < 0)

{

if (errno == EEXIST) //如果消息隊列已存在

msgid = msgget(key, 0666);

else

ERR_EXIT("msgget:");

}

else

msgid = ret;

//設置發送buf

memset(&sndbuf, 0, sizeof(sndbuf));

memset(&revbuf, 0, sizeof(revbuf));

pid = getpid(); //獲取pid作為包頭發出去

while (fgets(sndbuf.mtext + 4, sizeof(sndbuf.mtext), stdin) != NULL)

{

sndbuf.mtype = 1; //發送方總是發送類型1

memcpy(sndbuf.mtext, &pid, 4);

//*((int*)sndbuf.mtext) = pid; //這句話是指將sndbuf.mtext最前面四個字節指向一個int類型指針

ret = msgsnd(msgid, &sndbuf, strlen(sndbuf.mtext + 4) + 4, IPC_NOWAIT);

if (ret < 0)

ERR_EXIT("msgsnd");

sleep(1);

//讀取

ret = msgrcv(msgid, &revbuf, sizeof(revbuf.mtext), pid, IPC_NOWAIT);

if (ret < 0)

ERR_EXIT("msgrcv:");

fputs(revbuf.mtext + 4, stdout);

memset(&sndbuf, 0, sizeof(sndbuf));

memset(&revbuf, 0, sizeof(revbuf));

}

return 0;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532784.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532784.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532784.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux中 C++ main函數參數argc和argv含義及用法

Linux中 C main函數參數argc和argv含義及用法 簡介 argc 是 argument count的縮寫&#xff0c;表示傳入main函數的參數個數&#xff1b; argv 是 argument vector的縮寫&#xff0c;表示傳入main函數的參數序列或指針&#xff0c;并且第一個參數argv[0]一定是程序的名稱&…

c語言六位搶答器課程設計,51單片機八路搶答器課程設計

;說明&#xff1a;本人的這個設計改進后解決了前一個版本中1號搶答優先的問題&#xff0c;并增加了錦囊的設置&#xff0c;當參賽選手在回答問題時要求使用錦囊&#xff0c;則主持人按下搶答開始鍵&#xff0c;計時重新開始。;八路搶答器電路請看下圖是用ps仿真的&#xff0c;已…

ELF文件詳解—初步認識

ELF文件詳解—初步認識 轉自&#xff1a;https://blog.csdn.net/daide2012/article/details/73065204 一、 引言 在講解ELF文件格式之前&#xff0c;我們來回顧一下&#xff0c;一個用C語言編寫的高級語言程序是從編寫到打包、再到編譯執行的基本過程&#xff0c;我們知道在C…

埃及分數問題c語言,埃及分數問題(轉)

今日&#xff0c;小雨和小明來到網絡中心&#xff0c;繼續與劉老師討論“數的認識”問題。劉老師說&#xff1a;“還有一種‘埃及分數’需要認識。這是一類分裂分數的思維題&#xff0c;對思維能力的訓練很有價值。”小明說&#xff1a;“有意思&#xff0c;愿洗耳恭聽。”劉老…

linux常用命令--開發調試篇

前言 Linux常用命令中有一些命令可以在開發或調試過程中起到很好的幫助作用&#xff0c;有些可以幫助了解或優化我們的程序&#xff0c;有些可以幫我們定位疑難問題。本文將簡單介紹一下這些命令。 轉自&#xff1a;https://www.yanbinghu.com/2018/09/26/61877.html 示例程序…

簡單有趣的c語言小程序,一個有趣的小程序

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓源碼:#include #include #include #include #include HINSTANCE g_hInstance 0;LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nSh…

linux下ora 01110,ORA-01003ORA-01110

Oracle 9i數據庫登錄時&#xff0c;提示ORA-01003&ORA-01110&#xff0c;大概意思是數據文件存儲介質損壞。startup nomount,正常&#xff1b;alter database mount,也正常&#xff1b;alter database open,提示如下&#xff1a;alter database open*ERROR 位于第 1 行:ORA…

x11轉發:通過ssh遠程使用GUI程序

x11轉發&#xff1a;通過ssh遠程使用GUI程序 我們常常使用ssh服務遠程操控服務器&#xff0c;大多數操作我們都可以通過命令行命令來實現。 ssh遠程無法查看GUI程序 現在&#xff0c;筆者在x11-test目錄下放入一張圖片test.jpg&#xff0c;并通過opnencv-python寫一個簡單的…

操作系統引導詳細過程

操作系統引導詳細過程 轉自&#xff1a;https://blog.csdn.net/lijie45655/article/details/89366372 就直觀而言&#xff0c;我們所見到計算機啟動的過程是&#xff1a;按下電腦開機鍵&#xff0c;系統在黑色的屏幕下打印出一些英文語句、然后進入進度條狀態&#xff0c;最后…

android 自定義透明 等待 dialog,Android自定義Dialog內部透明、外部遮罩效果

Android自定義Dialog內部透明、外部遮罩效果發布時間&#xff1a;2020-09-09 03:01:41來源&#xff1a;腳本之家閱讀&#xff1a;117作者&#xff1a;zst1303939801本文實例為大家分享了Android自定義Dialog遮罩效果的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下圖…

對比損失的PyTorch實現詳解

對比損失的PyTorch實現詳解 本文以SiT代碼中對比損失的實現為例作介紹。 論文&#xff1a;https://arxiv.org/abs/2104.03602 代碼&#xff1a;https://github.com/Sara-Ahmed/SiT 對比損失簡介 作為一種經典的自監督損失&#xff0c;對比損失就是對一張原圖像做不同的圖像…

android 融云瀏覽大圖,融云 Android sdk kit 頭像昵稱更新機制

先申明筆者的實現方式不是唯一 也不一定是最優化的方案 如果您看到此篇博文 有不同看法 或者 更好的優化 更高的效率 歡迎在評論發表意見 融云官網點我融云頭像機制相關視頻詳解首先跟大家說一下 kit 跟 lib 的頭像機制 kit 是已經包含融云已經給開發者定制好的界面 諸如 會話界…

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one.

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. 報錯信息 報錯信息&#xff1a; RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates tha…

android訪問重定向地址,如何從android中重定向url加載圖像(示例代碼)

嗨&#xff0c;我正面臨這個問題我從RESTCall獲取了一個URL網址是http://hck.re/kWWxUI但是當我在瀏覽器中檢查時&#xff0c;它會重定向到https://s3-ap-southeast-1.amazonaws.com/he-public-data/afreen2ac5a33.jpg如何將此圖像加載到我的imageView中我已經知道如何將畢加索…

Linux中的awk、sed、grep及正則表達式詳解

Linux中的awk、sed、grep及正則表達式詳解 簡介 awk、sed和grep是Linux中文本操作的三大利器。 其中awk適用于取列&#xff0c;sed適用于取行&#xff0c;grep適用于過濾。 正則表達式 首先我們來介紹一下正則表達式&#xff0c;正則表達式(regular expression)描述了一種…

android聚焦時如何給控件加邊框,edittext設置獲得焦點時的邊框顏色

第一步&#xff1a;為了更好的比較&#xff0c;準備兩個一模一樣的EditText(當Activity啟動時&#xff0c;焦點會在第一個EditText上&#xff0c;如果你不希望這樣只需要寫一個高度和寬帶為0的EditText即可避免&#xff0c;這里就不這么做了)&#xff0c;代碼如下&#xff1a;a…

gcc參數 -i, -L, -l, -include

gcc參數 -i, -L, -l, -include -i&#xff0c;-L&#xff0c;-l&#xff0c;-include -l和-L -l參數就是用來指定程序要鏈接的庫&#xff0c;-l參數緊接著就是庫名&#xff0c;那么庫名跟真正的庫文件名有什么關系呢&#xff1f;就拿數學庫來說&#xff0c;他的庫名是m&…

xargs 命令教程

xargs 命令教程 轉自&#xff1a;http://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html 作者&#xff1a; 阮一峰 日期&#xff1a; 2019年8月 8日 xargs是 Unix 系統的一個很有用的命令&#xff0c;但是常常被忽視&#xff0c;很多人不了解它的用法。 本文介紹如…

android strictmode有什么作用,Android 性能優化 之 StrictMode

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;StrictMode概述StrictMode 是用來檢測程序中違例情況的開發者工具。使用StrictMode&#xff0c;系統檢測出主線程違例的情況會做出相應的反應&#xff0c;如日志打…

curl 的用法指南

curl 的用法指南 轉自&#xff1a;http://www.ruanyifeng.com/blog/2019/09/curl-reference.html 作者&#xff1a; 阮一峰 日期&#xff1a; 2019年9月 5日 簡介 curl 是常用的命令行工具&#xff0c;用來請求 Web 服務器。它的名字就是客戶端&#xff08;client&#xf…