diff options
Diffstat (limited to 'init/service_utils.cpp')
-rw-r--r-- | init/service_utils.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/init/service_utils.cpp b/init/service_utils.cpp index f88ea9758..34aa8370f 100644 --- a/init/service_utils.cpp +++ b/init/service_utils.cpp @@ -120,22 +120,19 @@ Result<void> SetUpPidNamespace(const char* name) { } void ZapStdio() { - int fd; - fd = open("/dev/null", O_RDWR); + auto fd = unique_fd{open("/dev/null", O_RDWR | O_CLOEXEC)}; dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); - close(fd); } void OpenConsole(const std::string& console) { - int fd = open(console.c_str(), O_RDWR); - if (fd == -1) fd = open("/dev/null", O_RDWR); + auto fd = unique_fd{open(console.c_str(), O_RDWR | O_CLOEXEC)}; + if (fd == -1) fd.reset(open("/dev/null", O_RDWR | O_CLOEXEC)); ioctl(fd, TIOCSCTTY, 0); dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); - close(fd); } } // namespace |