第二十三天:共用記憶體.訊息佇列及mysql資料庫使用

來源:互聯網
上載者:User

標籤:style   blog   http   ar   使用   sp   檔案   資料   on   

共用記憶體和訊息佇列也是進程間的通訊方式。

共用記憶體,(和訊號量的操作類似)

#include<sys/shm.h>

1、int shmget(key_t key,size_t size,int shmflg);

作用:建立一塊記憶體或者返回已建好的記憶體

參數:key,用於表示開闢一段記憶體,各進程通過這個標誌訪問同一塊記憶體

      size,記憶體的大小

      shmflg,和檔案操作完全相同許可權表示,按位或IPC_CREATE表示建立一塊記憶體,如果key表示的記憶體已經建立,即使加了IPC_CREATE也不會建立一塊記憶體,會返回key關聯的記憶體。

傳回值:返回一個標示符,其他對共用記憶體的操作,用到該傳回值

2、void *shmat(int shm_id,const void * shm_addr,int shmflg);

作用:講一段共用記憶體串連到當前進程

參數:shm_id,shmget的傳回值

      shm_addr串連到當前進程的地址位置,一般為NULL,表示讓系統來選擇

      shmfig:SHM_RND,與shm_addr聯合使用,控制串連地址

             SHM_RDONLY,唯讀

             一般設為0

   傳回值:指向共用記憶體第一位元組的指標

3、int shmdt(const void * shm_addr);

作用:將共用記憶體從當前進程分離出去

參數:shmat的傳回值

4、int shmctl(int shm_id,int command,struct shmid_ds * buf);

structshmid_ds {

    uid_t shm_perm.uid;

    uid_t shm_perm.gid;

    mode_t shm_prem.mode;

}

作用:對共用記憶體的控制

參數:shm_id,shm_get的傳回值

      commond,IPC_STAT:把shmid_ds中的值設為當前共用記憶體狀態值

               IPC_SET:把共用記憶體狀態設為shmid_ds中的值

               IPC_RMID:刪除共用記憶體段

訊息佇列

#include<sys/msg.h>

1、int msgget(key_t key,int msgflg);

作用:建立和訪問一個訊息佇列

參數:key,索引值表示一個訊息佇列

         msgflg,許可權標誌位,與shmget標誌位類似

傳回值:返回一個描述符,用於其他訊息佇列函數中

2、int msgsnd(int msqid,const void * msg_ptr,size_t msg_sz,int msgflg);

   一般把訊息用下邊結構體表示

  struct my_message{

    long int message_type;//表示資料類型

    /*The data you wish to transfer*/

}

   作用:把訊息添加到訊息佇列

   參數:msqid,msgget的傳回值

         msg_ptr,指向準備發送訊息的指標

         msg_sz,訊息長度不包括長整形訊息類型變數

         msgflg控制當前隊列滿或達到系統最大限度時發生的事情,一般設為0

3、int msgrcv(int msqid,void * msg_ptr,size_t msg_sz,long intmsgtype,int msgflg);

    作用:從訊息佇列中接收訊息

    參數:msqid,msgget函數的傳回值

          msg_ptr,指向準備接收訊息的指標

          msg_sz,接受訊息的大小,不包括表示類型的第一個變數

          msgtype,接受類型

          msgflg,控制沒有訊息接收時發生的事情,一般設為0

5、int msgctl(int msqid,int commond,struct msqid_ds * buf);

structmsqid_ds {

   uid_t msg_perm.uid;

   uid_t msg_perm.gid;

   mode_t msg_perm.mode;

}

http://blog.csdn.net/coderlrx/article/details/8762017

第二十三天:共用記憶體.訊息佇列及mysql資料庫使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.