嵌入式linux訊息佇列應用

2021-10-09 19:45:26 字數 1367 閱讀 7988

在核心空間開闢一片區域,乙個程序將資料傳到另乙個程序,需要完成2次資料複製。第一次,將乙個程序的資料複製到核心中,即從使用者態轉到核心態。第二次,將核心的資料複製到另乙個程序,即從核心態轉到使用者態。與管道相比,簡化了對檔案的操作。

第一步:建立乙個物件,msgget。需要定義佇列的鍵值,相當於ipc通訊物件中的id號,需要與其他ipc物件的key不一樣,接著還需設定許可權、模式。

第二步:複製「訊息」到快取區,則先定義乙個結構體

#define max_text 512

struct msg_st

;

利用stmncmp函式,將資料複製到msg_st的text中。

第三步:傳送訊息,msgsnd。這個函式的倒數第二個引數一般設定為0,則表示按照佇列的先進先出規則來傳送訊息。而設定為 等於 msg_st中msg_type的值,則只傳送與msg_type匹配的訊息。

傳送訊息例程

#include

#include

#include

#include

#include

#include

#define max_text 512

struct msg_st

;int

main()

while

(running)if(

strncmp

(buffer,

"end",3

)==0)

running =0;

sleep(1

);}exit

(exit_failure)

;}

第一步:建立物件,msgget。主要用來獲取相同key值的id號。

第二步:接收訊息,msgrcv。引數用法與msgsnd類似。

接收例程

#include

#include

#include

#include

#include

#include

struct msg_st

;int

main()

while

(running)

printf

("you wrote: %s\n"

, data.text);if

(strncmp

(data.text,

"end",3

)==0)

running =0;

}if(msgctl

(msgid, ipc_rmid,0)

==-1)

exit

(exit_failure)

;}

嵌入式系統應用

不論是日常生活中經常使用的家庭自動化產品 家用電器 手提 自動櫃員機 atm 還是各行各業的辦公裝置 現代化醫療裝置 航空電子 計算機網路裝置 用於工業 自動化和監測的可程式設計邏輯控制器 plc 甚至是娛樂裝置的固定遊戲機和可攜式遊戲機 等,都屬於嵌入式系統。歸納起來,嵌入式系統的應用領域可以包括...

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...

linux嵌入式開發

我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...