linux系统调用 ftruncate设置文件大小
生活随笔
收集整理的這篇文章主要介紹了
linux系统调用 ftruncate设置文件大小
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
系統(tǒng)調用ftruncate可以將一個文件裁剪為指定的大小,函數描述如下:
- 頭文件:
<unistd.h> <sys/types.h> - 函數使用:
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length); - 函數參數:
可以看到兩者有不同的使用方式,truncate是通過文件路徑來裁剪文件大小,而ftruncate是通過文件描述符進行裁剪; - 返回值
成功:0
失敗:-1 - 權限要求:
ftruncate要求文件被打開且擁有可寫權限
truncate要求文件擁有可寫權限 - 注意:
如果要裁剪的文件大小大于設置的off_t length,文件大于length的數據會被裁剪掉
如果要裁剪的文件小于設置的offt_t length,則會進行文件的擴展,并且將擴展的部分都設置為\0,文件的偏移地址不會發(fā)生變化
ftruncate主要被用作POSIX共享內存對象的大小設置
函數使用:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define TRUN "./test_truncate"
int main() {char *name = "test_file";//打開文件且擁有可寫權限int fd = open(name,O_CREAT|O_RDWR,0666);if ( -1 == fd ) {printf("open %s failed \n",name);_exit(-1);}//通過文件描述符對文件大小進行裁剪if(ftruncate(fd,4096) != -1) {printf("ftruncate success \n");}//直接設置指定路徑的文件大小if(truncate(TRUN,8192) != -1) {printf("truncate success\n");}//通過fstat獲取文件屬性信息struct stat buf;fstat(fd,&buf);printf("stat.size is %ld \n",buf.st_size);printf("stat.inode is %ld \n",buf.st_ino);printf("stat.mode is %lo(octal) \n",(unsigned long)buf.st_mode);printf("stat.bytes is %ld \n",buf.st_blksize);close(fd);return 0;
}
總結
以上是生活随笔為你收集整理的linux系统调用 ftruncate设置文件大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个关于皮肤黑的个性签名。
- 下一篇: 绝对性不孕症