《Linux系统编程(第2版)》——2.9 文件截短

简介: 这两个系统调用都将给定文件截短为参数len指定的长度。ftruncate()系统调用在已经以可写方式打开的文件描述符fd上操作。truncate()系统调用在path指定的可写文件上操作。成功时都返回0,出错时都返回-1并相应设置errno值。

本节书摘来自异步社区《Linux系统编程(第2版)》一书中的第2章,第2.9节,作者:【美】Robert Love著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.9 文件截短

Linux提供了两个系统调用支持文件长度截短,各个POSIX标准都(不同程度地)定义了它们,分别是:

screenshot

这两个系统调用都将给定文件截短为参数len指定的长度。ftruncate()系统调用在已经以可写方式打开的文件描述符fd上操作。truncate()系统调用在path指定的可写文件上操作。成功时都返回0,出错时都返回-1并相应设置errno值。

这些系统调用最常见的用法是把文件大小截短成比当前文件长度小。成功返回时,文件长度变成len,介于之前len和老的文件长度之间的数据会被丢弃,并不再可读。

这两个函数还可以把文件“截短”为比原长度更大,这和2.7.1小节中描述的查找写例子很相似。扩展出的字节都是用0填充。

这两个操作都不会修改当前文件位置。

举个例子,假设文件pirate.txt的长度是74字节,内容如下:

screenshot

在相同目录下,运行以下代码:

screenshot

其执行结果是生成了一个45字节的文件,内容如下:

screenshot

相关文章
|
4天前
|
Linux
【Linux系统编程】基础指令(二)(下)
【Linux系统编程】基础指令(二)
|
4天前
|
Linux C语言
【Linux系统编程】基础指令(二)(上)
【Linux系统编程】基础指令(二)
|
2天前
|
Linux
Linux文件误删恢复
请注意,成功恢复误删文件的机会取决于多个因素,包括文件被删除后经过的时间、磁盘的使用情况以及您采取的操作。因此,尽可能快速采取行动,并避免在误删文件所在的磁盘上写入新数据,以提高恢复成功的可能性。
6 0
|
3天前
|
存储 监控 Linux
|
3天前
|
安全 Linux
【亮剑】如何在Linux使用 chattr 命令更改文件或目录的扩展属性?
【4月更文挑战第30天】`chattr`是Linux中用于管理文件和目录扩展属性的命令,影响文件系统处理方式。常用属性包括:`a`(追加)、`i`(不可变)、`s`(安全删除)和`S`(同步更新)。通过`chattr [选项] <模式> <文件或目录>`设置属性,如`chattr +i <文件名>`使文件不可变,`-i`移除不可变属性。`lsattr`用于查看属性。注意,只有root用户有权更改属性,不是所有文件系统都支持所有属性,且更改关键文件属性前应备份。`chattr`有助于提升系统安全性和数据保护。
|
3天前
|
Linux 开发者
【亮剑】Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile
【4月更文挑战第30天】本文介绍了Linux系统中的四种文件锁定机制:flock、fcntl、lockfile和flockfile,用于多进程环境下协调共享资源访问,防止数据损坏和竞争条件。flock适合脚本,fcntl提供底层灵活性,lockfile用于管理锁定文件,flockfile则结合两者功能。选择锁定策略时需考虑应用场景,如脚本可选flock,复杂需求则用fcntl。理解并正确使用这些工具对保证系统稳定性和数据一致性至关重要。
|
4天前
|
存储 算法 Linux
【Linux】文件打包解压_tar_zip
【Linux】文件打包解压_tar_zip
14 0
【Linux】文件打包解压_tar_zip
|
4天前
|
Linux 开发者
【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc
【Linux】:文件查看 stat、cat、more、less、head、tail、uniq、wc
13 1
|
4天前
|
存储 Unix Linux
【Linux系统编程】基础指令(三)
【Linux系统编程】基础指令(三)
|
4天前
|
Linux
【Linux系统编程】基础指令(一)(下)
【Linux系统编程】基础指令(一)