您的位置:首页 > 运维架构 > Linux

Linux 使用lseek生成4G以上的空洞文件

2018-02-27 11:10 417 查看
创建4g空洞文件源码lseek_creat.c#ifndef _FILE_OFFSET_BITS  
#define _FILE_OFFSET_BITS 64
#endif
#include<stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char** argv)
{
if(argc < 2)
{
printf("Usage: %s [file]\n", argv[0]);
return -1;
}
int fd = open(argv[1], O_WRONLY | O_CREAT, 0755);
if(fd ==  -1)
{
perror("open");
return -1;
}
off_t ret = lseek(fd, 0xFFFFFFFFl, SEEK_SET); //0xFFFFFFFF是一个长整数
if(ret == -1)
{
perror("lseek");
return -1;
}
write(fd, "\0", 1);
close(fd);

return 0;
}如果想要在32位系统上操作大于2g的文件,你需要在包含任何头文件前添加宏#define _FILE_OFFSET_BITS 64。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: