linux共享記憶體初體驗

2021-07-31 05:12:44 字數 2941 閱讀 6930

1.程序1**:

#include

#include

#include

#include

intmain()

void* shm = null;

int shmid;

shmid = shmget(1314,10,0666|ipc_creat);

if(-1 == shmid)

printf("shmgeterror\n");

return -1;

shm = shmat(shmid,0,0);

if((void*)-1 == shm)

printf("shmaterror\n");

return -1;

sprintf((char*)shm,"%s","hello");

if(-1 == shmdt(shm))

printf("shmdterror\n");

return -1;

return 0;

2.程序2**:

#include

#include

#include

#include

intmain()

void* shm = null;

int shmid;

shmid = shmget(1314,10,0666|ipc_creat);

if(-1 == shmid)

printf("shmgeterror\n");

return -1;

shm = shmat(shmid,0,0);

if((void*)-1 == shm)

printf("shmaterror\n");

return -1;

printf("%s\n",(char*)shm);

if(-1 == shmctl(shmid,ipc_rmid,null))

printf("shmctlerror\n");

return -1;

return 0;

#include

#include

#include

2.shmget

函式作用:得到乙個共享記憶體識別符號或建立乙個共享記憶體物件。

原型:intshmget(key_t key, size_t size, int shm***)

返回值:成功返回共享記憶體的識別符號,出錯返回-1.

3. shmat

原型:void *shmat(intshmid, const void *shmaddr, int shm***)

4. shmdt

函式作用:斷開共享記憶體連線。

原型:int shmdt(constvoid *shmaddr)

返回值:成功返回0,出錯返回-1.

5. shmctl

函式作用:共享記憶體管理

原型:int shmctl(intshmid, int cmd, struct shmid_ds *buf)

返回值:成功返回0,出錯返回-1.

1.   shell中可以檢視和釋放已分配的共享記憶體。

2.   ipcs命令

不加引數,會顯示出共享記憶體,訊號量,訊息佇列;

-m引數,只顯示共享記憶體;

例如:root@ubuntu:/usr/study# ipcs

------ shared memory segments --------

key        shmid      owner     perms      bytes      nattch    status     

0x00000522 65536     root       666        10         0                      

------ semaphore arrays --------

key        semid      owner     perms      nsems    

------ message queues --------

key        msqid      owner     perms      used-bytes   messages   

root@ubuntu:/usr/study# ipcs -m

------ shared memory segments --------

key        shmid      owner     perms      bytes      nattch    status     

0x00000522 65536     root       666        10         0                      

3.ipcrm命令

刪除共享記憶體。

root@ubuntu:/usr/study#ipcs -m

------ sharedmemory segments --------

key        shmid      owner     perms      bytes      nattch    status     

0x0000052265536      root       666        10         0                      

root@ubuntu:/usr/study#ipcrm -m 65536

root@ubuntu:/usr/study#ipcs -m

------ sharedmemory segments --------

key        shmid      owner     perms      bytes      nattch    status     

4.釋放所有已分配的共享記憶體

ipcs -m | awk '$2 ~ /[0-9]+/ ' | while read s; dosudo ipcrm -m $s; done

我的Linux之路 Linux初體驗

這學期新增了linux課程,讓我可以在課堂上接觸了這個嵌入式的作業系統,作為對我們學習進度的安排,我們要開始寫部落格,既是對自己的督促,也可以讓自己能更好的學習這門很有用的課程,下面是我個人在裝了linux系統之後的一點體驗。我們一般所指的linux作業系統都是指基於linux核心的作業系統,我們手...

Linux 學習筆記 gcc初體驗

大部分內容 用vmware裝了個ubuntu的虛擬機器嗎,前坑未填,又增新坑。在這裡學了一下,基本的目錄結構 目錄管理的生存向命令 vim的基本操作 好了!開始填坑!ctrl alt t 開啟終端 pwd 顯示當前目錄 cd 切換目錄 接下來主要說明gcc的用法 1.單個檔案的編譯 首先通過vim建...

Linux多執行緒程式設計初體驗

直接上 include pthread.h 執行緒庫,執行緒不是通過核心實現的 include stdio.h include stdlib.h include unistd.h void thread func void arg int main sleep 1 等待1 s,否則程序先結束那麼執行...