2013-05-23 5 views
0

Я хотел бы знать, как содержимое файла может быть очищено в * nix, если оно открыто для записи. (Это может быть лог-файл, например.)Как очистить содержимое открытого файла в * nix

+0

Какой язык вы используете кстати? – rath

+0

Могу ли я сделать это только в командной строке без использования какого-либо языка? – Mikhail

+0

'' файл' может сделать это - он обрезает файл. – fedorqui

ответ

1

Взгляните на fopen's manpage:

ж

Обрезать файл нулевой длины или создать текстовый файл для записи. Поток расположен в начале файла.

так что если вы используете

fp=fopen("file.txt", "w"); 

содержимое file.txt будет стерта.

Update:

Чтобы удалить содержимое файла из командной строки используйте

printf "\0" > file.txt 
+1

Обратите внимание, что следующее происходит в зависимости от флаги, что программа, в которой файл открыт для записи, используется в вызове 'open()'. Если флаги включали 'O_APPEND', все хункидоры. Если они этого не сделали, процесс будет продолжать писать в той же позиции в файле, который он писал ранее. Отсутствующие данные между началом файла и положением записи будут обрабатываться как нулевые байты. Когда следующий процесс начнет записываться, файл будет расти до большего, чем его предыдущий размер. Он не будет использовать все пространство на диске, но файл будет по-прежнему больше, чем был до того, как он будет усечен. –

Смежные вопросы