我有这个示例代码,我正在尝试为我的操作系统实现一个程序,该程序将输入文件的内容复制到输出文件。我只允许使用POSIX系统调用,禁止使用stdio。 我已经考虑过将内容存储在缓冲区中,但在我的实现中我必须知道文件描述符的内容大小。我用Google搜索了一下,发现了
off_t fsize;
fsize = lseek (input, 0, SEEK_END);
但是在这种情况下我的文件描述符(输入)搞砸了,我无法将它回放到开头。我玩了参数,但在使用lseek之后,我无法想办法将它倒回到文件中的第一个字符。这是我唯一需要的东西,我可以逐字节循环并将输入的所有内容复制到输出。
我的代码在这里,如果您想要查看的话,它很短:
https://github.com/lucas-sartm/OSAssignments/blob/master/copymachine.c
答案 0 :(得分:-1)
我通过反复试验弄明白了。所需要的只是阅读文档并查看read()返回值...这个循环解决了这个问题。
while (read (input, &content, sizeof(content)) > 0){ //this will write byte by byte until end of buffer!
write (output, &content, sizeof(content));
}