写入文件一致性后的跨进程读取

时间:2015-07-25 06:58:01

标签: c++ c windows

在保证写入一致性后是否读取了跨进程文件,特别是在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);

1 个答案:

答案 0 :(得分:0)

当读取其他人正在写入时,读取和写入操作在同一数据块上时会导致问题,因此会产生不可预测的数据。

从不同的块读取并在另一个块中写入不会导致任何问题。

同时读写不会导致程序崩溃。