好的,所以我正在学习 C 并且在一本教科书中有一个练习留给读者,这本书解释了一个文件(或至少是一个常规文件)只是一个字节数组。据我了解,在 linux 中,每个块都是 512 字节,但是当您将文件读入文件描述符时,程序会自动加载整个文件,这可能是正确的吗?这本书介绍了 Linux 系统调用read, write, and lseek
(一些基本的低级调用)。
现在的目标就像我说的将文件逐字节复制到一些随机的新文件中。伪代码将是完全可以接受的。无论如何,我的理解是您需要
我的理解是构建会是这样的:
#include <all of the req'd headers>
int main(int argc,char** argv) {
char buff[1]; // byte by byte buffer
inf fd = open("filename", O_RDONLY);
int fdp[2]; // for the pipe's fd's
pipe(fdp);
if( fork() == 0 ) {
close(fdp[0]);
}
else {
write("newfile", buff, 1);
}
}
至少在现阶段对我来说,这确实是一个相当复杂的问题。我的想法是将文件的全部内容读入文件描述符,然后使用管道逐字节写入新文件,将前一个文件的全部内容复制到新文件中。我也不确定 lseek 在这种情况下如何帮助我们。或者我是否过于复杂化并且方向完全错误?