我有ARMv7设备和linux内核4.4,我有一个简单的测试用例:
# before unshare()..: /
# after unshare()..: /new_root
执行此二进制文件后,我有输出:
/* thread.c */
#include <unistd.h>
#include <stdio.h>
#include <sched.h>
void readlink_my(const char* when)
{
char buf[100];
int len = readlink("/proc/self/root", buf, sizeof(buf));
buf[len] = '\0';
printf("%s: %s\n", when, buf);
}
int main()
{
readlink_my("before unshare()..");
if(unshare(CLONE_NEWNS) == -1)
perror("error in unshare()..\n");
readlink_my("after unshare()..");
return 0;
}
如果我从测试用例中删除多线程:
# before unshare()..: /
# after unshare()..: /
在unshare()之后我将获得没有/ new_root的输出:
@Document
class User{
private String id ;
private String name;
@Dbref
private List<Socity> Socitys;
}
我认为在取消共享(CLONE_NEWNS)后,它将复制mount namespace。
我在第一个多线程示例中从哪里得到/ new_root?