小编ilo*_*owe的帖子

从Go调用setns为mnt命名空间返回EINVAL

C代码工作正常并正确进入命名空间,但Go代码似乎总是从setns调用返回EINVAL 进入mnt命名空间.我已经尝试了数置换(包括嵌入的C代码与CGO和外部的.so)上的Go 1.2,1.3和当前的尖端.

单步执行代码gdb表明两个序列都setnslibc完全相同的方式调用(或者它在我看来).

我已经把下面的代码中的问题煮成了问题.我究竟做错了什么?

建立

我有一个用于启动快速bu​​sybox容器的shell别名:

alias startbb='docker inspect --format "{{ .State.Pid }}" $(docker run -d busybox sleep 1000000)'
Run Code Online (Sandbox Code Playgroud)

运行之后,startbb将启动一个容器并输出它的PID.

lxc-checkconfig 输出:

Found kernel config file /boot/config-3.8.0-44-generic
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: missing
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup …
Run Code Online (Sandbox Code Playgroud)

c linux system-calls go cgo

10
推荐指数
1
解决办法
1677
查看次数

标签 统计

c ×1

cgo ×1

go ×1

linux ×1

system-calls ×1