【发布时间】:2019-06-06 16:05:54
【问题描述】:
首先我得说我完全有可能遗漏了什么。 我的任务是实质上实现'fprintf'。现在虽然不需要附加到文件,但我喜欢超越。 我的问题是,我在 xv6 中找不到 lseek 的定义,这意味着我必须自己实现它,但我真的不知道如何去做。
尝试在无限循环中一次读取 512 个字节以尝试将光标移到末尾,作为硬编码的一种方式,但如果文件未使用 O_RDWR 打开或我尝试使用 stdout 则失败.
我也试过在无限循环上写一个空字符串。知道这行不通,但还是尝试了。
我可以很好地阅读xv6(用户级程序),但我一生都看不懂lseek的源代码
不一定是真正的 lseek。我只需要能够到达 fd 的末尾并继续写入,但这不能依赖于文件模式。
非常感谢任何帮助。
【问题讨论】:
-
为什么
fprintf需要寻找? -
@melpomene 我正在尝试让附加模式(“a”)正常工作
-
fprintf不需要关心模式。"a"应该在fopen中实现(只需将O_APPEND传递给open)。 -
@melpomene 既然你提到了...我已经将 O_APPEND 传递给 open()。我在 sys_open 的定义名称“off”中找到了一些东西,所以我认为这是偏移量。我把它弄乱了,看看我能不能让 O_APPEND 工作。谢谢