如何使用低级I/O函数打印已追加的文件内容?
我最接近的方法是打印我用于追加的文本,例如:
file1.txt = dog
file2.txt = cat
我想要打印出现在的 "catdog" 文件 file2.txt。该怎么做?
如之前所述,我只能打印出 "dog"。我也成功地将文件附加到了末尾。我知道这可能是一个非常简单的解决方案,但我已经思考了几个小时。
我的代码:
while (1) {
if ((bufchar = read(fdin1, buf, sizeof(buf))) > 0) {
bp = buf; // Pointer to next byte to write.
while (bufchar > 0) {
if ((wrchar = write(fdin2, bp, bufchar)) < 0)
perror("Write failed");
bufchar -= wrchar; // Update.
bp += wrchar;
}
}
else if (bufchar == 0) { // EOF reached.
break;
}
else
perror("Read failed");
}
open()
调用,因为有很多可以使用并且会影响结果的标志。O_TRUNC
和O_APPEND
是两个重要的标志,O_CREAT
也是如此。如果不知道您如何操作它以及如何将file2.txt
倒回或重新打开以打印到标准输出,则很难猜测问题出在哪里。请阅读有关如何创建MCVE(如何创建最小完整可验证示例?)。有了这个,解决问题很可能是直截了当的。 - Jonathan Leffler