文件截短有时我们需要在文件尾端处截去一些数据以缩短文件。将一个文件的长度截短为0是一个特例,用O_TRUNC标志可以做到这一点。为了截短文件可以调用函数truncate和ftruncate。


#include <sys types.h="">

#include <unistd.h>



int truncate(const char *pathname, off_t length);

int ftruncate(int filedes, off_t length);

</unistd.h></sys>

两个函数返回;若成功则为0,若出错则为-1。这两个函数将由路径名pathname或打开文件描述符filedes指定的一个现存文件的长度截短为length。如果该文件以前的长度大于length,则超过length以外的数据就不再能存取。如果以前的长度短于length,则其后果与系统有关。如果某个实现的处理是扩展该文件,则在以前的文件尾端和新的文件尾端之间的数据将读作0 (也就是在文件中创建了一个空洞)。

SVR4和4.3+BSD提供了这两个函数。它们不是POSIX.1或XPG3的组成部分。SVR4截短或扩展一个文件。4.3+BSD只用这三个函数截短一个文件——不能用它们扩展一个文件。UNIX从来就没有截短文件的一种标准方法。完全兼容的应用程序必须对文件制作一个副本,在制作它时只复制所希望的数据字节。SVR4的fcntl中有一个POSIX.1没有规定的命令F_FREESP,它允许释放一个文件中的任何一部分,而不只是文件尾端处的一部分。

通过合理利用这些函数,我们可以有效地管理文件系统。以下是一些相关资源,可以帮助更好地理解和应用这些概念:

  1. Unix文件管理系统

  2. UNIX文件系统

  3. 模拟UNIX文件系统

  4. UNIX高级文件系统

  5. UNIX文件系统命令

这些链接提供了丰富的资料和教程,可以帮助深入理解UNIX文件系统的管理和使用。

文件截短-鸿鹄论坛_华为认证h35-211-hcnp-access network题库