用Luajit玩Linux共享内存

本文通过两个Lua脚本示例介绍了如何使用共享内存进行进程间通信。第一个脚本用于写入共享内存,第二个脚本则从同一段共享内存中读取数据。文中还提供了检查和清理共享内存的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.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 shmid = ffi.C.shmget(798,30000000,0)
if shmid==-1 then
     ffi.C.perror('')
     os.exit(0)
end
print(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删除共享内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值