【问题标题】:How to clear the contents of an open file in *nix如何清除 *nix 中打开文件的内容
【发布时间】:2013-05-23 15:02:35
【问题描述】:

我想知道如何在 *nix 中清除文件的内容,如果它是可写的。 (例如,它可能是一个日志文件。)

【问题讨论】:

  • 顺便说一句,您使用什么语言?
  • 我可以在不使用任何语言的命令行中完成吗?
  • > file 可以做到——它会截断文件。
  • 即使它被另一个程序打开?
  • How to truncate a file in C? 的可能重复项

标签: file unix truncate


【解决方案1】:

看看fopen's manpage

w

将文件截断为零长度或创建文本文件以进行写入。流位于文件的开头。

所以如果你使用

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

file.txt 的内容将被删除。

更新:

要从命令行删除文件的内容,请使用

printf "\0" > file.txt

【讨论】:

  • 请注意,接下来发生的事情取决于打开文件以供写入的程序在调用open()时使用的标志。如果标志包括O_APPEND,那么一切都是 hunkydory。如果他们没有,该进程将继续在文件中它先前写入的相同位置写入。文件开头和写入位置之间的缺失数据将被视为空字节。当该进程下一次写入它时,该文件将增长回大于其以前的大小。它不会使用所有磁盘空间,但文件仍会比截断前大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2011-09-14
  • 2014-07-16
  • 2011-06-16
相关资源
最近更新 更多