<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一江春水向東流

    做一個(gè)有思想的人,期待與每一位熱愛(ài)思考的人交流,您的關(guān)注是對(duì)我最大的支持。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      44 隨筆 :: 139 文章 :: 81 評(píng)論 :: 0 Trackbacks

    IPC之共享存儲(chǔ)區(qū)
    用共享存儲(chǔ)區(qū)進(jìn)行進(jìn)程間通信主要有以下步驟組成
    1. Create shared memory?
    int shmget(key_t key, int size, int shmflg);?
    if ((shm_id = shmget (mykey, sizeof (struct sharedbuf), 0600 | IFLAGS)) < 0)
    ??? perror ("shmget");

    2. Attach shared memory?
    char *buf = shmat (shm_id, 0, 0);
    ?
    3. Read / Write shared memory?
    sharedbuf->size = size_;?
    memcpy(sharedbuf->buf, mybuf, size_);?
    memcpy(mybuf, sharedbuf->buf, sharedbuf->size);?
    ?
    3. Detach shared memory (optional)?
    shmdt (buf);
    ?
    4. Remove shared memory?
    if (shmctl (shm_id, IPC_RMID, (struct shmid_ds *)0) < 0)?
    ??? perror ("shmctl");

    一個(gè)測(cè)試過(guò)的實(shí)例
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/shm.h>
    #include <sys/ipc.h>
    #define SHM_MODE (SHM_R | SHM_W)
    #define SHM_SIZE 2048

    int main()
    {
    ?int segment_id, segment_size;
    ?char *shared_memory;
    ?pid_t pid;
    ?
    ?if((segment_id = shmget(IPC_PRIVATE, SHM_SIZE, SHM_MODE)) < 0)/*獲得共享內(nèi)存標(biāo)識(shí)符*/
    ??perror("shmget error!\n");
    ?if((shared_memory = shmat(segment_id, 0, 0)) == (void *)-1)/*進(jìn)程和共享內(nèi)存段相連接*/
    ??perror("shmat error!\n");
    ?printf("test1 send a message to share memory.\n");
    ?sprintf(shared_memory, "Hello test2\n");
    ?shmdt(shared_memory);/*脫離鏈接*/
    ?pid = fork();
    ?if(pid < 0)
    ??perror("Creating process error!\n");
    ?else if(pid > 0)
    ?{
    ??wait(NULL); /*父進(jìn)程等待子進(jìn)程結(jié)束*/
    ??shmctl(segment_id, IPC_RMID, 0);/*子進(jìn)程結(jié)束,父進(jìn)程將共享內(nèi)存刪除*/
    ??exit(0);
    ?}
    ?else
    ?{???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
    ??if((shared_memory = shmat(segment_id, 0, 0)) == (void*)-1)/*子進(jìn)程和共享內(nèi)存連接*/
    ???perror("shmat error!\n");
    ??printf("test2 get a message form share memory:%s",shared_memory);
    ??shmdt(shared_memory);
    ?}
    }?????

    相關(guān)參考:http://blog.csdn.net/Apollo_zhc/archive/2006/06/01/768694.aspx

    posted on 2007-05-04 17:27 allic 閱讀(491) 評(píng)論(0)  編輯  收藏 所屬分類: linux/UNIX 應(yīng)用開(kāi)發(fā)
    主站蜘蛛池模板: 黄网站在线播放视频免费观看| 成人免费无码大片a毛片| 理论秋霞在线看免费| 亚洲国产成人久久综合一区| 在线亚洲精品自拍| 成年女人永久免费观看片| 88av免费观看入口在线| a毛片在线看片免费| 一级中文字幕免费乱码专区| 亚洲另类自拍丝袜第五页| 亚洲电影在线免费观看| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲国产精品成人精品小说| 国产av无码专区亚洲av果冻传媒 | 亚洲AV无码久久久久网站蜜桃| 午夜亚洲国产理论秋霞| 亚洲综合色婷婷七月丁香| 亚洲av无码国产精品色在线看不卡| 精品久久久久国产免费| 久久久高清免费视频| 在线日本高清免费不卡| 毛片在线播放免费观看| 国产啪精品视频网站免费尤物| 久青草视频在线观看免费| 亚洲精品视频免费| jizz日本免费| japanese色国产在线看免费| 污视频网站免费观看| 免费精品视频在线| 特级毛片免费播放| caoporn国产精品免费| 一级做a爰片久久免费| fc2成年免费共享视频18| EEUSS影院WWW在线观看免费| 一区二区三区免费视频播放器| 九九免费精品视频在这里| 一级毛片免费全部播放| 中文字幕永久免费视频| 久9热免费精品视频在线观看| 午夜免费福利小电影| 美女视频黄的全免费视频网站|