1. 程式人生 > >作業系統 程序間的通訊 之 訊號 訊息佇列 共享記憶體 淺析

作業系統 程序間的通訊 之 訊號 訊息佇列 共享記憶體 淺析

訊息佇列其實就是一個訊息的連結串列,每個訊息佇列有一個佇列頭,稱為struct msg_queue,這個佇列頭描述了訊息佇列的key值,使用者ID,組ID等資訊,但它存於核心中。而結構體struct msqid_ds能夠返回或設定訊息佇列的資訊,這個結構體位於使用者空間中,與msg_queue結構相似訊息佇列允許一個或多個程序向它寫入或讀取訊息,訊息佇列是訊息的連結串列。
訊息是按訊息型別訪問,程序必須指定訊息型別來讀取訊息,同樣,當向訊息佇列中寫入訊息時也必須給出訊息的型別,如果讀佇列使用的訊息型別為0,則讀取佇列中的第一條訊息。
核心空間的結構體msg_queue描述了對應key值訊息佇列的情況,而對應於使用者空間的msqid_ds這個結構體,因此,可以操作msgid_ds這個結構體來操作訊息佇列。