在保证写入一致性后是否读取了跨进程文件,特别是在Windows上?
即。这是一个正确的程序:
// proccess1:
char tag = 0xF2;
char buf[256];
while (true) {
fseek(file, 0, SEEK_SET);
fread(buf, sizeof(char), sizeof(buf), file);
if (buf[0] == tag)
break;
sleep(1);
}
printf(&buf[1]); // Hello World
-
// process2:
char tag = 0xF2;
char[] buf = "Hello World";
sleep(rand() % 10);
fseek(file, 1, SEEK_SET);
fwrite(str, sizeof(char), sizeof(buf), file);
fseek(file, 0, SEEK_SET);
fwrite(&tag, sizeof(char), 1, file);
答案 0 :(得分:0)
当读取其他人正在写入时,读取和写入操作在同一数据块上时会导致问题,因此会产生不可预测的数据。
从不同的块读取并在另一个块中写入不会导致任何问题。
同时读写不会导致程序崩溃。