Tippre ilyen esetben bitre ugyanaz történik, mint a te megoldásod esetén akkor, amikor a program megdöglik az fflush() hívás előtt.
Mivel a javaslat az volt, hogy a fflush() helyett legyen egy close()+open() páros, ezért ha az adott pontig eljut a program, akkor akár a fflush(), akár a close() kiírja a cache tartalmát, ha idáig se jut el, akkor meg tök mindegy, melyik hívás nem üríti.
Egyébként nekem dereng olyan ioctl() hívás, amely tiltja a cache használatát - de ez nagyon régi és alapvetően Linux alatti kódból felderengő ködkép.