Завершилась ли программа к тому времени, когда вы проверили содержимое перенаправленного файла? Если он все еще работает, ваш вывод может все еще буферизироваться где-то в цепочке, поэтому вы не видите его в файле.
Помимо этого и других ответов, представленных до сих пор, я думаю, что пришло время показать репрезентативный пример кода проблемы. Там слишком много эзотерических возможностей.
EDIT
Судя по образцу кода, если у вас происходит относительно небольшое количество печати, вы попадаете в выходной буфер. Выполняйте очистку после каждой записи, чтобы убедиться, что она записана на диск. Как правило, вы можете хранить неписаные данные размером до размера страницы.
При отсутствии сброса единственный раз, когда вы можете быть уверены, что у вас есть все на диске, это когда программа завершается. Даже завершающий поток не сделает этого, поскольку подобные выходные буферы не для каждого потока, а для каждого процесса.