If you have a file open for read at the same time that the file
is open for write in the same application, you will be able to see
the new data if you call
fflush() to refresh the contents of the input
buffer, as shown in
Figure 1.
Figure 1. Example of reading updated
records/* this example demonstrates how updated records are read */
#include <stdio.h>
int main(void)
{
FILE * fp, * fp2;
int rc, rc2, rc3, rc4;
fp = fopen("a.b","w+");
fprintf(fp,"first record");
fp2 = fopen("a.b","r"); /* Simultaneous Reader */
/* following gets EOF since fp has not completed first line
* of output so nothing will be flushed to file yet */
rc = fgetc(fp2);
printf("return code is %i\n", rc);
fputc('\n', fp); /* this will complete first line */
fflush(fp); /* ensures data is flushed to file */
rc2 = fgetc(fp2); /* this gets 'f' from first record */
printf("value is now %c\n", rc2);
rewind(fp);
fprintf(fp, "some updates\n");
rc3 = fgetc(fp2); /* gets 'i' ..doesn't know about update */
printf("value is now %c\n", rc3);
fflush(fp); /* ensure update makes it to file */
fflush(fp2); /* this updates reader's buffer */
rc4 = fgetc(fp2); /* gets 'm', 3rd char of updated record */
printf("value is now %c\n", rc4);
return(0);
}