ftruncate(fd, file_seek);
函数作用:给定fd文件描述符,去file_seek大小。
返回值:
执行成功则返回0,失败返回-1,错误原因存于errno。
ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。
参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。
如果原来的文件大小比参数length大,则超过的部分会被删去。
#include <stdint.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define FILESIZE 5 * 1024 * 1024int main(void)
{int file = open("wt.txt", O_RDWR|O_CREAT);/** @important* 在这里先将文件的大小修改一下,*/ftruncate(file, FILESIZE);char* base = (char*)mmap(NULL, FILESIZE, PROT_READ|PROT_WRITE, MAP_SHARED, file, 0);printf("base = %#x\n", base);char* poffset = base;int i = 0;while (1) {if (i == 10) i = 0;if (poffset - base >= FILESIZE) return 0;*poffset++ = i++;}munmap(base, FILESIZE);return 0;
}