You don't understand how the system is handling files. You delete the file entry, but the file still exists as long as the program keeps an handle on it. So tee is never notified the entry was deleted and it still writes to the file ! A unique file can have many entries thanks to the hard links (created by the ln command). You could write your own version of tee which close and open the file on every line it writes to the file, but it would be very under-performing as it would generate so many system calls.