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,否則程序先結束那麼執行...