unshare.c - ubase - suckless linux base utils
 (HTM) git clone git://git.suckless.org/ubase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       unshare.c (772B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include <sched.h>
            3 #include <stdio.h>
            4 #include <stdlib.h>
            5 #include <string.h>
            6 #include <unistd.h>
            7 
            8 #include "util.h"
            9 
           10 static void
           11 usage(void)
           12 {
           13         eprintf("usage: %s [-muinpU] cmd [args...]\n", argv0);
           14 }
           15 
           16 int
           17 main(int argc, char *argv[])
           18 {
           19         int flags = 0;
           20 
           21         ARGBEGIN {
           22         case 'm':
           23                 flags |= CLONE_NEWNS;
           24                 break;
           25         case 'u':
           26                 flags |= CLONE_NEWUTS;
           27                 break;
           28         case 'i':
           29                 flags |= CLONE_NEWIPC;
           30                 break;
           31         case 'n':
           32                 flags |= CLONE_NEWNET;
           33                 break;
           34         case 'p':
           35                 flags |= CLONE_NEWPID;
           36                 break;
           37         case 'U':
           38                 flags |= CLONE_NEWUSER;
           39                 break;
           40         default:
           41                 usage();
           42         } ARGEND;
           43 
           44         if (argc < 1)
           45                 usage();
           46 
           47         if (unshare(flags) < 0)
           48                 eprintf("unshare:");
           49 
           50         if (execvp(argv[0], argv) < 0)
           51                 eprintf("execvp:");
           52 
           53         return 0;
           54 }