【发布时间】:2015-04-06 18:35:18
【问题描述】:
我正在尝试在一个文件中写入一个由 4 个无符号整数组成的结构,然后将其读回,但我什么也读不出来。
这是我的代码:
// create and write values in superblock
..
Superblock s; // the struct
if(write(file_desc , &superblock , sizeof(Superblock)) == -1) {
perror("writing superblock");
exit(1);
}
close(file_desc);
file_desc = open(path_file, O_WRONLY | O_CREAT, 0600);
while ( ( read( file_desc , &s , sizeof(Superblock))) > 0 ) {
printf("%u %u %u %u\n", s.block_size, s.filename_size, s.max_file_size,
s.max_dir_file_no);
}
它甚至不会进入循环。我错过了什么?
【问题讨论】:
-
直接读/写结构到磁盘是个坏主意。它们可以包含高度依赖于编译器的填充。
-
是的,最好直接序列化结构的每个字段,这样您就可以控制哪些位是外部表示的一部分。直接写入整个结构,你就没有这样的控制权了。