From 92ab403687c81e4304db41b42d93843ecd0e2e90 Mon Sep 17 00:00:00 2001 From: apio Date: Sat, 25 Nov 2023 12:18:48 +0100 Subject: [PATCH] terminal: Use forkpty() --- terminal/TerminalWidget.cpp | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/terminal/TerminalWidget.cpp b/terminal/TerminalWidget.cpp index aafe721b..e6a28f26 100644 --- a/terminal/TerminalWidget.cpp +++ b/terminal/TerminalWidget.cpp @@ -54,34 +54,14 @@ Result TerminalWidget::init(char* const* args) signal(SIGCHLD, sigchld_handler); int master; - int slave; - - int result = openpty(&master, &slave, nullptr, nullptr, nullptr); - if (result < 0) return err(errno); - - pid_t child = TRY(os::Process::fork()); + pid_t child = forkpty(&master, nullptr, nullptr, nullptr); + if (child < 0) return err(errno); if (child == 0) { - setsid(); - - close(master); - - ioctl(slave, TIOCSCTTY); - - dup2(slave, STDIN_FILENO); - dup2(slave, STDOUT_FILENO); - dup2(slave, STDERR_FILENO); - - tcsetpgrp(slave, getpid()); - - close(slave); - execv(args[0], args); _exit(127); } - close(slave); - m_pty = master; fcntl(master, F_SETFL, O_NONBLOCK);