LINUX.ORG.RU
В общем случае, этого сделать нельзя. Есть ftruncate, который может усечь файл. Так что сохрани хвост, сделай ftruncate, запиши сохраненный хвост. А лучше (надежнее) - просто перепиши нужные данные в другой файл.
tailgunner ★★★★★
()
открываешь файл, открываешь тмп файл, пишешь в тмп верхужку данного файла - до удаляемого куска, далее пишешь в тмп всё, что находится после удаляемого куска. потом переименовываешь тмп файл в данный файл.

=>(_!_)=> но работает =)

asgard
()
Ответ на: комментарий от asgard
Открываешь файл, ммэпишь файл, копируешь memmove-ом кусок данных после удаляемого куска со смещением в размер удаляемого куска, затем ftruncate.
Sorcerer ★★★★★
()
Ответ на: комментарий от Sorcerer
> Открываешь файл, ммэпишь файл, копируешь memmove-ом кусок данных после удаляемого куска со смещением в размер удаляемого куска, затем ftruncate.

а если ему, допустим, на ia32 из файла в 4Gb в конце подрезать чуток надо? ;) хотя в принципе подход интересный.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Ага, как некий прикол это может и забавно. Но самому через буфер перекидать будет правильнее и наверняка быстрее. Ну и про большие файлы ты уже сказал...

Teak ★★★★★
()
Я бы сделал это в несколько приёмов через dd. Ключики count и skip к вашим услугам.
ovax ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.