【发布时间】:2021-11-15 23:38:14
【问题描述】:
我正在使用 xv6 操作系统,我需要用一个文件替换 stdio。这通常是通过dup2 系统调用完成的,这个操作系统没有。有什么解决方法吗?我是否必须实现自己的系统调用来尝试模仿 POSIX 的一种行为?或者我需要的功能(替换文件描述符)可以在 c 程序的常规函数中实现吗?谢谢。
【问题讨论】:
-
看起来它有
dup()调用。哪个可以用来做同样的事情。 -
因为有
dup,所以使用fds。在那个系统上,打开一个新的 fd 是否使用最低可用的?如果是这样,并且当您说stdio时,如果您的意思是 fd 0、1 或 2,请在使用dup之前关闭您要替换的那个 -
如果你之前关闭了
stdin,那么它的描述符将被分配给dup-ed ——因为它将是可用的最低的。 -
@ikegami 谢谢你的帮助!
标签: c unix posix system-calls xv6