这是我非常简单的代码:
#define _GNU_SOURCE
#include <sched.h>
#include <errno.h>
#include <stdio.h>
int main(){
int res= unshare(CLONE_NEWUSER);
printf("res:%d\n",res);
perror("error");
return 0;
}
为什么代码总是失败(返回-1)?
我在Ubunto 13.04
这是我的内核版本和其他细节:
Linux ubuntu 3.10.37-031037-generic #201404141035 SMP Mon Apr 14 14:55:40 UTC 2014 i686 i686 i686 GNU/Linux
Invalid argument
这是该计划的输出:
res:-1
error: Invalid argument
答案 0 :(得分:1)
很可能是因为您的内核未配置为支持CONFIG_USER_NS
。
我估计运行命令:
unshare -U
也会在您的计算机上产生相同的错误。
您可以使用以下命令验证:
grep CONFIG_USER_NS /boot/config-$(uname -r)