From 7cc0b18f657bd72b231d3edde292cfd7f1c218db Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 25 Jan 2020 17:05:02 +0100 Subject: [PATCH] Kernel: Only open a single description for stdio in non-fork processes --- Kernel/Process.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 31f580b5fd6..51a2e7e574b 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -1210,9 +1210,10 @@ Process* Process::create_user_process(Thread*& first_thread, const String& path, auto* process = new Process(first_thread, parts.take_last(), uid, gid, parent_pid, Ring3, move(cwd), nullptr, tty); process->m_fds.resize(m_max_open_file_descriptors); auto& device_to_use_as_tty = tty ? (CharacterDevice&)*tty : NullDevice::the(); - process->m_fds[0].set(*device_to_use_as_tty.open(O_RDONLY).value()); - process->m_fds[1].set(*device_to_use_as_tty.open(O_WRONLY).value()); - process->m_fds[2].set(*device_to_use_as_tty.open(O_WRONLY).value()); + auto description = device_to_use_as_tty.open(O_RDWR).value(); + process->m_fds[0].set(*description); + process->m_fds[1].set(*description); + process->m_fds[2].set(*description); error = process->exec(path, move(arguments), move(environment)); if (error != 0) {