Есть ли «коммит» для fprintf? (Предотвратите потерю данных, когда сервер умирает) - PullRequest
0 голосов
/ 09 марта 2012

Я пишу Сервер для клиент-серверного приложения на C. Я должен сохранять журналы в файл.

Я записываю его в файл с помощью fprintf, но когда сервер отключается, я теряю данные в файле, потому что я не закрываю файловый дескриптор, есть ли какая-либо функция, которая сообщает моей программе сохранить данные?

Thx

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Если вы fflush после каждого fprintf, это помогает.

2 голосов
/ 09 марта 2012

fflush должен делать то, что вы хотите - он гарантирует, что весь вывод явно записывается в файл, а не, например, кэшируется для последующей записи.Таким образом, это перемещает данные из пользовательского пространства.

sync может затем использоваться - это вызывает физическую запись всех изменений в буферизованном файле (хотя, согласно спецификации, нет необходимости блокировать до завершения записи,так что вы можете быть уверены, что они начались, но не окончены).

...