#define _GNU_SOURCE #include #include #include #include #include #include #include #include int childfn(void *p) { int fd = open("/", O_RDONLY | O_DIRECTORY); assert(fd == 3); return 0; } int main() { char buf[10000]; pid_t pid; int res; pid = clone(childfn, buf+5000, CLONE_NEWNS | CLONE_FILES | SIGCHLD, NULL); if (pid == -1) { perror("clone"); return 1; } wait(&res); if (res != 0) { fprintf(stderr, "child exited with error %i\n", res); return 1; } res = fchdir(3); if (res == -1) { perror("fchdir"); return 1; } mkdir("/tmp/mnt", 0755); return system("mount --bind . /tmp/mnt"); }