Yes, but your method eats up the whole machine, thus preventing any
other process from updating the input file. Not really practical.
Demonstrably not true.
But even if it were, then it would be a possible QOI issue on the
implementation of the standard library.
On a unitasking system, there would not and could not be another
process for this code to contend against. Thus the code would have
explicit permission to use as much CPU as necessary, but would be
useless because there would be no other code executing (because of the
design of the system, and not because of the example code) to write
the file that this code reads.
On a co-operative multitasking system, the program would effect it's
voluntary release of processing time either through the explicit
invocation a system-specific API (off topic here), or through an
implicit release imbedded in the standard library. I would expect
that, sans system-specific API, the implementation of standard
functions (especially like the time functions) would include such a
voluntary release. Once that release is met, then competing processes
(including the one that writes to the file) can run and extend the
file. Surely, this is a QOI issue here.
Finally, on a preemptive multitasking system, the program is forced
(through an off-topic external mechanism) to release it's processing.
Again, once released, competing processes (including the one that
writes to the file) can run and extend the file.
I stand by the assertions that this will and does work, does not "hog
CPU" and is legal (at least from a C90 standpoint). I don't know how
code written to the C99 standard (sans POSIX) would do this, though.