後我有一些一段代碼,其是這樣的:未取回終端提示叉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
您應該首先接受問題 –