Преглед на файлове

move signal handling before fork to avoid race with sigchild

Jan Klemkow преди 5 години
родител
ревизия
d40d23e29a
променени са 1 файла, в които са добавени 5 реда и са изтрити 5 реда
  1. 5 5
      scroll.c

+ 5 - 5
scroll.c

@@ -415,6 +415,11 @@ main(int argc, char *argv[])
 	if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
 		die("ioctl:");
 
+	if (signal(SIGCHLD, sigchld) == SIG_ERR)
+		die("signal:");
+	if (signal(SIGWINCH, sigwinch) == SIG_ERR)
+		die("signal:");
+
 	child = forkpty(&mfd, NULL, &dfl, &ws);
 	if (child == -1)
 		die("forkpty:");
@@ -441,11 +446,6 @@ main(int argc, char *argv[])
 		die("pledge:");
 #endif
 
-	if (signal(SIGCHLD, sigchld) == SIG_ERR)
-		die("signal:");
-	if (signal(SIGWINCH, sigwinch) == SIG_ERR)
-		die("signal:");
-
 	struct termios new = dfl;
 	cfmakeraw(&new);
 	new.c_cc[VMIN ] = 1;	/* return read if at least one byte in buffer */