与C中的close(fd)相反的是什么?

时间:2011-10-23 12:08:57

标签: c pipe file-descriptor

我正在尝试创建一个迷你shell,其中命令相互通过管道传输。在我的代码中的某些点:

close(1) //closing stdout

close(0) //closing stdin

但是后来我正在分叉,所以我希望我的新子进程重置所有内容。那我该怎么做:

*function_name_here*(1) //reopening stdout

*function_name_here*(0) //reopening stdin

1 个答案:

答案 0 :(得分:6)

如果您使用的是UNIX类型系统(如果您正在调用fork,则很可能 ),通常可以执行以下两种操作之一。

首先是打开/dev/tty,这将使您可以访问终端设备(假设终端设备是您想要的而不是原始文件句柄)。

第二个是关闭它之前dup该文件句柄,这样你就有了一个可用的副本。然后,您可以使用dup2将其恢复。 Linux here的详细信息,或者您也可以执行man dupman dup2