【文章內(nèi)容簡介】
,生命力更強,應(yīng)用空間更大。附錄 1:在參考文獻[1]中,給出了IPC隨進程持續(xù)、隨內(nèi)核持續(xù)以及隨文件系統(tǒng)持續(xù)的定義:1. 隨進程持續(xù):IPC一直存在到打開IPC對象的最后一個進程關(guān)閉該對象為止。如管道和有名管道; 2. 隨內(nèi)核持續(xù):IPC一直持續(xù)到內(nèi)核重新自舉或者顯示刪除該對象為止。如消息隊列、信號燈以及共享內(nèi)存等; 3. 隨文件系統(tǒng)持續(xù):IPC一直持續(xù)到顯示刪除該對象為止。 附錄 2:結(jié)構(gòu)msg_queue用來描述消息隊列頭,存在于系統(tǒng)空間:struct msg_queue { struct kern_ipc_perm q_perm。 time_t q_stime。 /* last msgsnd time */ time_t q_rtime。 /* last msgrcv time */ time_t q_ctime。 /* last change time */ unsigned long q_cbytes。 /* current number of bytes on queue */ unsigned long q_qnum。 /* number of messages in queue */ unsigned long q_qbytes。 /* max number of bytes on queue */ pid_t q_lspid。 /* pid of last msgsnd */ pid_t q_lrpid。 /* last receive pid */ struct list_head q_messages。 struct list_head q_receivers。 struct list_head q_senders。}。結(jié)構(gòu)msqid_ds用來設(shè)置或返回消息隊列的信息,存在于用戶空間;struct msqid_ds { struct ipc_perm msg_perm。 struct msg *msg_first。 /* first message on queue,unused */ struct msg *msg_last。 /* last message in queue,unused */ __kernel_time_t msg_stime。 /* last msgsnd time */ __kernel_time_t msg_rtime。 /* last msgrcv time */ __kernel_time_t msg_ctime。 /* last change time */ unsigned long msg_lcbytes。 /* Reuse junk fields for 32 bit */ unsigned long msg_lqbytes。 /* ditto */ unsigned short msg_cbytes。 /* current number of bytes on queue */ unsigned short msg_qnum。 /* number of messages in queue */ unsigned short msg_qbytes。 /* max number of bytes on queue */ __kernel_ipc_pid_t msg_lspid。 /* pid of last msgsnd */ __kernel_ipc_pid_t msg_lrpid。 /* last receive pid */}。//可以看出上述兩個結(jié)構(gòu)很相似。附錄 3:消息隊列實例輸出結(jié)果:current number of bytes on queue is 0number of messages in queue is 0max number of bytes on queue is 16384pid of last msgsnd is 0pid of last msgrcv is 0last msgsnd time is Thu Jan 1 08:00:00 1970last msgrcv time is Thu Jan 1 08:00:00 1970last change time is Sun Dec 29 18:28:20 2002msg uid is 0msg gid is 0//上面剛剛創(chuàng)建一個新消息隊列時的輸出current number of bytes on queue is 1number of messages in queue is 1max number of bytes on queue is 16384pid of last msgsnd is 2510pid of last msgrcv is 0last msgsnd time is Sun Dec 29 18:28:21 2002last msgrcv time is Thu Jan 1 08:00:00 1970last change time is Sun Dec 29 18:28:20 2002msg uid is 0msg gid is 0read from msg queue 1 bytes//實際讀出的字節(jié)數(shù)current number of bytes on queue is 0number of messages in queue is 0max number of bytes on queue is 16384 //每個消息隊列最大容量(字節(jié)數(shù))pid of last msgsnd is 2510pid of last msgrcv is 2510last msgsnd time is Sun Dec 29 18:28:21 2002last msgrcv time is Sun Dec 29 18:28:22 2002last change time is Sun Dec 29 18:28:20 2002msg uid is 0msg gid is 0current number of bytes on queue is 0number of messages in queue is 0max number of bytes on queue is 16388 //可看出超級用戶可修改消息隊列最大容量pid of last msgsnd is 2510pid of last msgrcv is 2510 //對操作消息隊列進程的跟蹤last msgsnd time is Sun Dec 29 18:28:21 2002last msgrcv time is Sun Dec 29 18:28:22 2002last change time is Sun Dec 29 18:28:23 2002 //msgctl()調(diào)用對msg_ctime有影響msg uid is 8msg gid is 8參考文獻: UNIX網(wǎng)絡(luò)編程第二卷:進程間通信,作者: Stevens,譯者:楊繼張,清華大學(xué)出版社。對POSIX以及系統(tǒng)V消息隊列都有闡述,對Linux環(huán)境下的程序開發(fā)有極大的啟發(fā)意義。 linux內(nèi)核源代碼情景分析(上),毛德操、胡希明著,浙江大學(xué)出版社,給出了系統(tǒng)V消息隊列相關(guān)的源代碼分析。 ,主要闡述linux下對文件的操作,詳細介紹了對文件的存取權(quán)限位,對IPC對象的存取權(quán)限同樣具有很好的借鑒意義。 msgget、msgsnd、msgrcv、msgctl手冊g an employment tribunal claimEmployment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you don39。t agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can mak