取消共享(CLONE_NEWNS)系统调用后错误/ proc / self / root

时间:2017-04-06 10:53:02

标签: c linux embedded-linux

我有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?

0 个答案:

没有答案