3.**測試
共享記憶體是程序間通訊中最簡單的方式之一。共享記憶體允許兩個或更多程序訪問同一塊記憶體,就如同 malloc() 函式向不同程序返回了指向同乙個物理記憶體區域的指標。當乙個程序改變了這塊位址中的內容的時候,其它程序都會察覺到這個更改。
標頭檔案:
#include
#include
原型:
int
shmget
(key_t key, size_t size,
int shm***)
;
標頭檔案:
#include
#include
原型:
void
*shmat
(int shmid,
const
void
*shmaddr,
int shm***)
;
寫入或讀出資料;
int
shmget
(key_t key, size_t size,
int shm***)
int
shmdt
(const
void
*shmaddr)
;shmdt
(shmaddr)
;
標頭檔案:
#include
#include
原型:
int
shmctl
(int shmid,
int cmd,
struct shmid_ds *buf)
;
#include
#include
#include
#include
#include
//int shmget(key_t key, size_t size, int shm***);
intmain()
// void *shmat(int shmid, const void *shmaddr, int shm***);
// int shmdt(const void *shmaddr);
shmaddr =
shmat
(shmid,0,
0);printf
("shmat is ok\n");
strcpy
(shmaddr,
"hello world\n");
sleep(3
);// int shmctl(int shmid, int cmd, struct shmid_ds *buf);
shmdt
(shmaddr)
;shmctl
(shmid,ipc_rmid,0)
;printf
("quit\n");
return0;
}
結果:
shmat is ok
quit
#include
#include
#include
#include
#include
//int shmget(key_t key, size_t size, int shm***);
intmain()
// void *shmat(int shmid, const void *shmaddr, int shm***);
// int shmdt(const void *shmaddr);
shmaddr =
shmat
(shmid,0,
0);printf
("shmat is ok\n");
printf
("shmat:%s\n"
,shmaddr)
;// int shmctl(int shmid, int cmd, struct shmid_ds *buf);
shmctl
(shmid,ipc_rmid,0)
;printf
("quit\n");
return0;
}
結果:
shmat is ok
shmat:hello world
quit
學識淺薄,學習為用。。。
——師從上官可程式設計,陳立臣
嵌入式 linux 檢視記憶體
在windows系統中檢視記憶體 root scs 2 tmp free total used free shared buffers cached mem 3266180 3250004 16176 0 110652 2668236 buffers cache 471116 2795064 swa...
嵌入式 Linux程序間通訊(八) 共享記憶體
共享記憶體允許兩個或更多程序共享給定的記憶體區,資料不需要在不同程序間進行複製,是最快的程序間通訊方式。使用共享記憶體唯一需要注意的是多個程序之間對給定儲存區的同步訪問,但共享記憶體本身沒有提供同步機制,通常使用訊號量來實現對共享記憶體訪問的同步。共享記憶體程式設計流程 建立共享記憶體 對映共享記憶...
嵌入式 Linux程序間通訊(八) 共享記憶體
嵌入式 linux程序間通訊 八 共享記憶體 一 共享記憶體 共享記憶體允許兩個或更多程序共享給定的記憶體區,資料不需要在不同程序間進行複製,是最快的程序間通訊方式。使用共享記憶體唯一需要注意的是多個程序之間對給定儲存區的同步訪問,但共享記憶體本身沒有提供同步機制,通常使用訊號量來實現對共享記憶體訪...