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

Pit*_*kos 1 c pipe file-descriptor

我正在尝试制作一个迷你shell,其中命令是相互管道的.在代码中的某些点我做:

close(1) //closing stdout
Run Code Online (Sandbox Code Playgroud)

close(0) //closing stdin
Run Code Online (Sandbox Code Playgroud)

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

*function_name_here*(1) //reopening stdout
Run Code Online (Sandbox Code Playgroud)

*function_name_here*(0) //reopening stdin
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 6

如果你是一个UNIX类系统上(和你最有可能的,如果你调用fork),通常可以做两件事情之一.

第一个是打开/dev/tty,它将允许您访问您的终端设备(假设终端设备是您想要的而不是原始文件句柄).

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