【发布时间】:2011-10-08 00:09:08
【问题描述】:
我有一段代码是这样的:
pipe(fd);
child_map[0] = fd[0];
child_map[1] = fileno(stdout)
child_map[2] = fileno(stderr);
pid = fork();
if (child_process)
dup(child_map[0], STDIN_FILENO)
dup(child_map[0], STDOUT_FILENO)
dup(child_map[0], STDERR_FILENO)
execvp(argv[0], argv) /* child process can be either "grep" or "more" etc */
else if parent_process
return;
我的问题是,在我将输出重定向到 grep/more(可以是子进程)后,我无法恢复终端提示。不过,命令 o/p 在终端上打印得很好。但是我没有得到提示,我可以看到“更多”或“grep”进程正在后台运行。我需要输入 ctrl+C 才能获得提示。我知道这与文件描述符未关闭等有关,但我不知道如何解决这个问题。
这实际上是在另一个进程上下文中完成的。而且我可以看到父进程仍在运行。除非我终止它,否则它不会终止。所以没有任何关于孩子成为孤儿的问题。 [摘自 Vin 的评论,澄清价值值得怀疑 -msw]
【问题讨论】:
-
你应该先接受一个问题