Mercurial > hg > toybox
view toys/unshare.c @ 577:2a757e592ff7
Remove strndupa() gnu-ism at Georgi's suggestion, and adjust mdev to compile with new dirtree. (No idea if it works, this command was never finished and needs a lot more work.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 09 May 2012 06:39:01 -0500 |
parents | 99cb6ad605ee |
children |
line wrap: on
line source
/* vi: set sw=4 ts=4: * * unshare.c - run command in new context * * Copyright 2011 Rob Landley <rob@landley.net> * * Not in SUSv4. USE_UNSHARE(NEWTOY(unshare, "<1^nium", TOYFLAG_USR|TOYFLAG_BIN)) config UNSHARE bool "unshare" default y depends on TOYBOX_CONTAINER help usage: unshare [-muin] COMMAND... Create new namespace(s) for this process and its children, so some attribute is not shared with the parent process. This is part of Linux Containers. Each process can have its own: -m Mount/unmount tree -u Host and domain names -i SysV IPC (message queues, semaphores, shared memory) -n Network address, sockets, routing, iptables */ #include "toys.h" #include <linux/sched.h> extern int unshare (int __flags); void unshare_main(void) { unsigned flags[]={CLONE_NEWNS, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWNET,0}; unsigned f=0; int i; for (i=0; flags[i]; i++) if (toys.optflags & (1<<i)) f |= flags[i]; if(unshare(f)) perror_exit("failed"); xexec(toys.optargs); }