Minoru
слушайте, я чего-то фундаментального не понимаю, видимо. Есть программа на Си, она открывает файл, пишет в него чиселко, закрывает файл и завершается. Эта программа запускается из скрипта, который запускает программу, дожидается её завершения, проверяет её exit code, после чего открывает и читает созданный программой файл. Почему-то иногда файл оказывается пустым, хотя последующая ручная проверка (с помощью cat) показывает, что данные в файле есть. Вопрос: как это вообще возможно?
Попробуй подёргать fsync, у или как там этот механизм называется.
Программа и скрипт запущены под одним и тем же юзером? А скрипт на чём написан? Нет вероятности, что там какая-то абстракция над ФС со своим кэшом?
А файл какой, обычный или какой-нибудь пайп или ещё какая зверушка?