后我有一些一段代码,其是这样的:未取回终端提示叉EXEC-DUP
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 /以上(其可以是子进程),我无法获取终端提示符。虽然命令o/p在终端上打印得很好。但我没有回到提示,我可以看到“更多”或“grep”进程在后台运行。我需要输入ctrl + C来获得提示。我知道它与文件描述符没有关闭等有关,但我不知道如何解决这个问题。
这实际上是从另一个过程上下文来完成的。我可以看到父进程仍在运行。除非我终止它,否则它不会终止。所以,这个孩子没有孤儿的问题。 [从Vin的评论中解释,澄清值是值得怀疑的-msw]
有人可以帮忙吗? – Vin
您应该首先接受问题 –