Signed-off-by: Aleksandr Mezin <mezin.alexander@gmail.com>
return 1;
}
-int null_stdfds(void)
+int open_devnull(void)
{
- int fd, ret = -1;
+ int fd = open("/dev/null", O_RDWR);
+
+ if (fd < 0)
+ SYSERROR("Can't open /dev/null");
+
+ return fd;
+}
- fd = open("/dev/null", O_RDWR);
+int set_stdfds(int fd)
+{
if (fd < 0)
return -1;
if (dup2(fd, 0) < 0)
- goto err;
+ return -1;
if (dup2(fd, 1) < 0)
- goto err;
+ return -1;
if (dup2(fd, 2) < 0)
- goto err;
+ return -1;
+
+ return 0;
+}
+
+int null_stdfds(void)
+{
+ int ret = -1;
+ int fd = open_devnull();
+
+ if (fd >= 0) {
+ ret = set_stdfds(fd);
+ close(fd);
+ }
- ret = 0;
-err:
- close(fd);
return ret;
}
int safe_mount(const char *src, const char *dest, const char *fstype,
unsigned long flags, const void *data, const char *rootfs);
int mount_proc_if_needed(const char *rootfs);
+int open_devnull(void);
+int set_stdfds(int fd);
int null_stdfds(void);
int lxc_count_file_lines(const char *fn);
#endif /* __LXC_UTILS_H */