瀏覽代碼

ptty: wait for corrent child pid

Jan Klemkow 5 年之前
父節點
當前提交
3fc721d074
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      ptty.c

+ 6 - 3
ptty.c

@@ -79,8 +79,8 @@ main(int argc, char *argv[])
 		usage();
 
 	int mfd;
-	pid_t pid = forkpty(&mfd, NULL, NULL, &ws);
-	switch (pid) {
+	pid_t child = forkpty(&mfd, NULL, NULL, &ws);
+	switch (child) {
 	case -1:
 		die("forkpty");
 	case  0: /* child */
@@ -138,8 +138,11 @@ main(int argc, char *argv[])
 			break;
 	}
 
+	pid_t pid;
 	int status;
-	waitpid(pid, &status, 0);
+	while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
+		if (pid != child)
+			continue;
 
 	return WEXITSTATUS(status);
 }