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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2014025630《嵌入式程序设计》第七周学习总结

發布時間:2024/9/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2014025630《嵌入式程序设计》第七周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2014025630《嵌入式程序設計》第七周學習總結

教材學習內容總結

有名管道(FIFO)
命名管道也被稱為FIFO文件,是一種特殊的文件。由于linux所有的事物都可以被視為文件,所以對命名管道的使用也就變得與文件操作非常統一。
無名管道應用的一個重大限制是它沒有名字,因此,只能用于具有親緣關系的進程間通信,在有名管道(named pipe或FIFO)提出后,該限制得到了克服。FIFO不同于管道之處在于它提供一個路徑名與之關聯,以FIFO的文件形式存在于文件系統中。這樣,即使與FIFO的創建進程不存在親緣關系的進程,只要可以訪問該路徑,就能夠彼此通過FIFO相互通信(能夠訪問該路徑的進程以及FIFO的創建進程之間),因此,通過FIFO不相關的進程也能交換數據。值得注意的是,FIFO嚴格遵循先進先出(first in first out),對管道及FIFO的讀總是從開始處返回數據,對它們的寫則把數據添加到末尾。它們不支持諸如lseek()等文件定位操作。
管道的緩沖區是有限的(管道制存在于內存中,在管道創建時,為緩沖區分配一個頁面大小)
管道所傳送的是無格式字節流,這就要求管道的讀出方和寫入方必須事先約定好數據的格式,比如多少字節算作一個消息(或命令、或記錄)等等
FIFO往往都是多個寫進程,一個讀進程。
消息隊列
“消息隊列”是在消息的傳輸過程中保存消息的容器。消息被發送到隊列中。“消息隊列”是在消息的傳輸過程中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。
函數格式
msgsnd()函數語法要點

msgsnd()函數原型為:
int msgsnd(int msqid, const void msgp, size_t msgsz, int msgflg)
msqid:消息隊列的隊列 ID
msgp:指向消息結構的指針。
msgsz:消息正文的字節數(不包括消息類型指針變量)
msgflg:若為IPC_NOWAIT 若消息無法立即發送(比如:當前消息隊列已滿),函數會立即返回。若為0: msgsnd 調阻塞直到發送成功為止。

msgrcv()函數語法要點

msgrcv()函數原型為:
int msgrcv(int msgid, void *msgp, size_t msgsz, long int msgtyp, int msgflg)
msqid:消息隊列的隊列 ID
msgp:消息緩沖區, 同于 msgsnd()函數的 msgp
msgsz:消息正文的字節數(不包括消息類型指針變量)
msgtyp:0:接收消息隊列中第一個消息;大于 0:接收消息隊列中第一個類型為 msgtyp 的消息;小于 0:接收消息隊列中第一個類型值不小于 msgtyp 絕對值
且類型值又最小的消息
msgflg:MSG_NOERROR:若返回的消息比 msgsz 字節多,則消息就會截短到 msgsz 字節,且不通知消息發送進程;IPC_NOWAIT 若在消息隊列中并沒有相應類型的消息可以接收,則函數立即返回;0: msgsnd()調用阻塞直到接收一條相應類型的消息為止。

其他(感悟、思考等,可選)

本周的學習讓我學會了有名管道讀與寫的操作,學會了四個重要函數,為以后的學習奠定了良好的基礎

參考資料

  • 《嵌入式應用程序設計》學習指導
  • ...

轉載于:https://www.cnblogs.com/wly4/p/7003557.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的2014025630《嵌入式程序设计》第七周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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