1. shmtest_wirte.lua
ffi = require 'ffi'
ffi.cdef[[
int shmget(int key,int size,int flag);
void * shmat(int shmid,const void* ptr,int flag);
void perror(const char* msg);
char * strcpy(char * dest,const char* src);
]]
local IPC_CREAT = 01000
local shmid = ffi.C.shmget(798,30000000,IPC_CREAT)
print(shmid)
ffi.C.perror("creat shm")
local ptr = ffi.C.shmat(shmid,nil,0)
local str = ffi.cast("char *",ptr)
ffi.C.strcpy(str,"Hello World")
ffi.C.perror("str cpy")
2. shmtest_read.luaffi = require 'ffi'ffi.cdef[[ int shmget(int key,int size,int flag); void * shmat(int shmid,const void* ptr,int flag); void perror(const char* msg); char * strcpy(char * dest,const char* src);]]local shmid = ffi.C.shmget(798,30000000,0)if shmid==-1 then ffi.C.perror('') os.exit(0)endprint(shmid)ffi.C.perror("get shm by key")local ptr = ffi.C.shmat(shmid,nil,0)local str = ffi.cast('char *',ptr)print(ffi.string(str,30))
3. 管理ipcs命令查看ipcrm刪除共用記憶體