You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用open函数覆盖文件而非追加?Linux新手技术求助

文件覆盖写入与open函数说明

实现覆盖写入的方法

你当前的open调用缺少截断文件的标志,导致已有文件内容被保留,写入时看起来像是追加。只需添加O_TRUNC标志即可实现覆盖:

err = open("path/foo.txt", O_RDWR | O_CREAT | O_TRUNC, 0777);

O_TRUNC是POSIX标准规定的标志,当文件已存在且以可写模式打开时,它会将文件长度截为0,后续写入操作就会从文件开头开始,完全覆盖原有内容。

关于open函数与POSIX的说明

  • open是POSIX标准定义的系统调用,不是特定库或框架,所有符合POSIX规范的类Unix系统(包括Linux)都原生支持它。
  • 和你熟悉的fopen对比:fopen是C标准库提供的封装函数,底层依赖open系统调用。比如fopen("path/foo.txt", "w+")的效果,就等价于上面带O_TRUNC的open调用——同样会创建文件(不存在时)、截断已有文件、支持读写操作。

内容的提问来源于stack exchange,提问作者user44055

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:01:43