今天和同事讨论一个文件被open两次是否会成功, 以及交叉读写会有什么结果?
FILE* fd1 = NULL;
FILE* fd2 = NULL;
char buffer1[40];
char *buffer2 = "gggggggggg";
int ret = 0, ret1;
fd1 = fopen("./text", "rb+");
if(NULL == fd1)
{
perror("open");
}
fseek(fd1, 0, 0);
ret = fread(buffer1, 1, sizeof(buffer1)-1, fd1);
if (ret > 0)
buffer1[ret] = '\0';
printf("text1: %s \n", buffer1);
fd2 = fopen("./text", "rb+");
if(NULL == fd2)
{
perror("open");
}
fseek(fd2, 0, 0);
ret = fread(buffer1, 1, 10, fd2);
if (ret > 0)
buffer1[ret] = '\0';
printf("text2: %s \n", buffer1);
fseek(fd1, 10, 0);
ret = fwrite(buffer2, 1, strlen(buffer2), fd1);
ret1 = fclose(fd1);
printf("fclose(fd1) = %d \n", ret1);
fsee