go的shm 的SHMCTL调用的参数IPC_RMID
Hello,我的一个go 程序用到 共享内存 IPC通信 发现go的syscall中 shm有封装,SHMGET,SHMAT, SHMDT,SHMCTL ,但SHMCTL 调用,参数不知到怎么传入
这个函数 是创建 共享内测,并加载到程序空间,是没问题的,
func createShm(size int) (addr uintptr) {
flag := 0600
shmid, _, errno := syscall.RawSyscall(syscall.SYS_SHMGET, 0, uintptr(size), uintptr(flag))
log("SHMGET ", shmid, errno)
addr, _, errno := syscall.RawSyscall(syscall.SYS_SHMAT, shmid, 0, 0)
mm := (*byte)(unsafe.Pointer(addr))
log("memory ", mm)
log("SHMAT ", shmid, errno, addr)
return
}
这个SHMCTL参数怎么写啊,linux中有IPC_RMID,但是go中找不到这个常量,难道要用IPC_RMID对应的数字填进去吗?
func destroyShm(shmid uintptr) {
ret, _, errno := syscall.RawSyscall(syscall.SYS_SHMCTL, ??, 0, 0)
log("SHMDT ", errno, *(*int)(unsafe.Pointer(ret)))
}
共 1 个回复
xinyu391
没人回复啊?