【问题标题】:What's the opposite of close(fd) in C?C中close(fd)的反义词是什么?
【发布时间】:2011-10-23 12:08:57
【问题描述】:

我正在尝试制作一个迷你外壳,命令可以通过管道相互传输。在我做的代码中的某些点:

close(1) //closing stdout

close(0) //closing stdin

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

*function_name_here*(1) //reopening stdout

*function_name_here*(0) //reopening stdin

【问题讨论】:

标签: c pipe file-descriptor


【解决方案1】:

如果您使用的是 UNIX 类型的系统(如果您拨打 fork,您很可能),您通常可以做以下两件事之一。

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

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

【讨论】:

    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多