概述
IPC Namespace 是用来隔离 System V IPC 和POSIX message queues.每一个IPC Namespace都有他们自己的System V IPC 和POSIX message queue。
源码
package main
import (
"os/exec"
"syscall"
"os"
"log"
)
func main() {
cmd := exec.Command("sh")
cmd.SysProcAttr = &syscall.SysProcAttr{
Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC,
}
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}
测试结果:
go run ipc.go
sh-4.2#ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
//创建一个message queue
sh-4.2# ipcmk -Q
Message queue id: 0
sh-4.2# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
0x15aeef97 0 root 644 0 0
//重新打开一个终端,查看宿主机的ipc
[root@VM_0_10_centos ~]# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages