• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            使用Share Memory時(shí)的shmget失敗與ftok的關(guān)系。

            對(duì)于長期運(yùn)行的系統(tǒng),產(chǎn)生的日志是大量的,即使每2秒一條,一天也有4W多條。假如我們只需要在想觀察的時(shí)候動(dòng)態(tài)地看到當(dāng)前記錄或計(jì)數(shù),那么可以將日志的信息寫到一個(gè)共享內(nèi)存區(qū),然后寫一個(gè)LogReader,去訪問這個(gè)共享內(nèi)存區(qū)即可。

            ?

            要使用共享內(nèi)存,應(yīng)該有如下步驟:
            1.開辟一塊共享內(nèi)存 shmget()
            2.允許本進(jìn)程使用共某塊共享內(nèi)存 shmat()
            3.寫入/讀出

            需要?jiǎng)h除這塊內(nèi)存的時(shí)候,步驟為

            4.禁止本進(jìn)程使用這塊共享內(nèi)存 shmdt()
            5.刪除這塊共享內(nèi)存 shmctl()或者命令行下ipcrm

            ?

            過程會(huì)用到以下的這些函數(shù):

            ?int shmget( key_t shmkey , int shmsiz , int flag );

            ?創(chuàng)建一個(gè)新的共享內(nèi)存區(qū)或打開一存在的共享內(nèi)存區(qū)

            ?

            void *shmat( int shmid , char *shmaddr , int shmflag );

            返回共享內(nèi)存區(qū)在調(diào)用進(jìn)程內(nèi)的起始地址。 shmaddr最好設(shè)置為NULL,這樣系統(tǒng)會(huì)替我們選擇地址,可移植性更強(qiáng);否則會(huì)根據(jù)shmflag時(shí)候指定了SHM_RND,將共享內(nèi)存區(qū)附接到shmaddr參數(shù)指定的地址。

            ?

            今天調(diào)試的時(shí)候發(fā)現(xiàn)了以下的這些問題:兩個(gè)需要通信的進(jìn)程使用一個(gè)同樣的字符串調(diào)用ftok生成key,并對(duì)該key調(diào)用shmget,其中有一個(gè)不能訪問到共享內(nèi)存區(qū)。查閱了UNP2才明白了。


            ftok將一個(gè)已存在的路徑名和一個(gè)整數(shù)標(biāo)識(shí)符轉(zhuǎn)換成一個(gè)key_t值。

            ???? key_t ftok(const char *pathname, int proj_id)

            ftok會(huì)組合三個(gè)值來產(chǎn)生key:

            1、pathname所在的文件系統(tǒng)的信息。

            2、該文件在本文件系統(tǒng)內(nèi)的索引節(jié)點(diǎn)號(hào)。

            3、id的低序8位。

            ?

            key_t的生成是以一個(gè)已存在的文件作為輸入,并不是簡單的字符串散列函數(shù),必須真正存在某個(gè)文件,才能將其位置傳入ftok。
            人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 久久99国产乱子伦精品免费| 一本久久a久久精品亚洲| 人妻精品久久无码专区精东影业| 久久99国产精品久久99| 色悠久久久久久久综合网| 国产精品女同久久久久电影院| 久久久精品视频免费观看| 久久精品18| 久久久久AV综合网成人| 欧洲性大片xxxxx久久久| 久久香蕉国产线看观看乱码| 亚洲中文字幕无码久久2020 | 狠狠色婷婷久久综合频道日韩 | 亚洲欧美国产精品专区久久| 久久综合欧美成人| 久久久久久久97| 亚洲AV日韩精品久久久久久久| 免费精品久久久久久中文字幕| 曰曰摸天天摸人人看久久久| 97r久久精品国产99国产精| AV无码久久久久不卡蜜桃| 色婷婷久久久SWAG精品| 99久久精品无码一区二区毛片| 97超级碰碰碰久久久久| 久久久久人妻精品一区 | 久久亚洲国产精品成人AV秋霞 | 久久久久久精品久久久久| 无码任你躁久久久久久老妇| 久久精品不卡| 久久久久久国产精品无码下载 | 久久久久久综合一区中文字幕| 久久综合给合久久国产免费 | 99久久人人爽亚洲精品美女| 久久精品国产影库免费看| 久久99精品久久久久久动态图| 97久久国产露脸精品国产| 久久精品国产亚洲av日韩| 久久婷婷五月综合色奶水99啪| 久久99亚洲网美利坚合众国| 999久久久无码国产精品|