在核心空間開闢一片區域,乙個程序將資料傳到另乙個程序,需要完成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 然...