#include <unistd.h>
int truncate(const char * path, off_t length);
truncate()会将参数path 指定的文件大小改为参数length 指定的大小. 如果原来的文件大小比参数length 大, 则超过的部分会被删去.
man 2 truncate:
NAME
truncate, ftruncate - truncate a file to a specified length
SYNOPSIS
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
The truncate() and ftruncate() functions cause the regular file named by path or referenced by fd to be truncated to a size of precisely length bytes.
If the file previously was larger than this size, the extra data is lost. If the file previously was shorter, it is extended, and the extended part reads as null bytes ('\0').
The file offset is not changed.
If the size changed, then the st_ctime and st_mtime fields (respectively, time of last status change and time of last modification; see stat(2)) for the file are updated, and the set-user-ID and
set-group-ID permission bits may be cleared.
With ftruncate(), the file must be open for writing; with truncate(), the file must be writable.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(void)
{
int fd;
const char *s1 = "0123456789";
const char *s2 = "abcde";
ftruncate(fd, 0);
close(fd);
return 0;
}