今日命令:
df -k //查看磁盘的分区情况

andrew@andrew-Thurley:~/work/iotec$ df -k
文件系统           1K-块     已用      可用 已用% 挂载点
udev             2800604        0   2800604    0% /dev
tmpfs             566068     8376    557692    2% /run
/dev/sda1      479605520 22543516 432676368    5% /
tmpfs            2830324    41372   2788952    2% /dev/shm
tmpfs               5120        4      5116    1% /run/lock
tmpfs            2830324        0   2830324    0% /sys/fs/cgroup
tmpfs             566068       68    566000    1% /run/user/1000

紧接着使用:sudo tune2fs -l /dev/sda1 命令查看洗盘下面的文件的具体划分

andrew@andrew-Thurley:~/work/iotec$ sudo tune2fs -l /dev/sda1
[sudo] andrew 的密码:
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          7df6cde0-ecea-46a6-82e5-f477ec203ebe
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              30466048
Block count:              121846272
Reserved block count:     6092313
Free blocks:              114272179
Free inodes:              30176830
First block:              0
Block size:               4096  //说明一个磁盘块的大小是4096大小,使用IO读写一次大小是4096大小,所以 设置缓存的大小最好使用4096大小,用于存放文件,这样在频繁的使用读写文件的时候,能够将操作系统的性能发挥到最大化。
Fragment size:            4096
Reserved GDT blocks:      994
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Tue Aug  7 23:50:03 2018
Last mount time:          Fri Aug 10 20:47:28 2018
Last write time:          Fri Aug 10 20:47:24 2018
Mount count:              7
Maximum mount count:      -1
Last checked:             Tue Aug  7 23:50:03 2018
Check interval:           0 (<none>)
Lifetime writes:          34 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       11411639
Default directory hash:   half_md4
Directory Hash Seed:      2707a476-4240-4ce1-99ef-36d47dd99c2a
Journal backup:           inode blocks

od -c //按照二进制文件查看文件

andrew@andrew-Thurley:~/work/iotec$ od -c hole.txt
0000000   0   1   2   3   4   5   6   7   8   9  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0   0   1   2   3   4   5   6   7   8   9

more hole.txt //按照字符查看文件 当碰到空洞文件的’\0’的时候会停止 ,因此对于空洞文件,hole.txt使用more将无法查看空洞后面的文件

andrew@andrew-Thurley:~/work/iotec$ od -c hole.txt
0000000   0   1   2   3   4   5   6   7   8   9  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0   0   1   2   3   4   5   6   7   8   9
头文件:#include <sys/types.h> #include <unistd.h>
用 法: off_t lseek(int handle, off_t offset, int fromwhere);

EEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
下列是较特别的使用方式:
1) 欲将读写位置移到文件开头时:
lseek(int fildes,0,SEEK_SET);
2) 欲将读写位置移到文件尾时:
lseek(int fildes,0,SEEK_END);
3) 想要取得目前文件位置时:
lseek(int fildes,0,SEEK_CUR);

返回值
当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。
可能设置erron的错误代码:
EBADF: fildes不是一个打开的文件描述符。
ESPIPE:文件描述符被分配到一个管道、套接字或FIFO。
EINVAL:whence取值不当。

例子:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
intmain(void)
{
int handle;
char msg[]="This is a test";
char ch;
/*create a file*/
handle=open("TEST.$$$",O_CREAT|O_RDWR,S_IREAD|S_IWRITE);
/*write some data to the file*/
write(handle,msg,strlen(msg));
/*seek to the begining of the file*/
lseek(handle,0,SEEK_SET);
/*reads chars from the file until we hit EOF*/
do
{
read(handle,&ch,1);
printf("%c",ch);
}while(!EOF);
close(handle);
return0;
}

代码例子2:

#define BUFFER_SIZE 1024
int main(int argc,char **argv)
{  int  readfd, writefd;  long filelen=0;  int  ret=1;  char buffer[BUFFER_SIZE];  char *ptr;  /*打开源文件*/   if((readfd=open("test.txt", O_RDONLY|O_CREAT)) == -1)   {   printf("Open Error\n");   exit(1);   }   /*创建目的文件*/   if((writefd=open("dest.txt", O_WRONLY|O_CREAT)) == -1)   {   printf("Open Error\n");   exit(1);   }   /*测得文件大小*/  filelen= lseek(readfd,0L,SEEK_END);  lseek(readfd,0L,SEEK_SET);  printf("read file size is %d\n",filelen);  /*进行文件拷贝*/  while(ret)   {   ret= read(readfd, buffer, BUFFER_SIZE);  if(ret==-1)  {  printf("read Error\n");   exit(1);          }  write(writefd, buffer, ret);  filelen-=ret;  bzero(buffer,BUFFER_SIZE);  }   close(readfd);   close(writefd);   exit(0);
}

lseek()函数详解相关推荐

  1. Linux系统调用四、lseek()函数详解

  2. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  3. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

  4. 【FFmpeg】函数详解(二)

    FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...

  5. 【FFmpeg】函数详解(一)

    FFmpeg函数详解 一.错误码相关 1.AVERROR 2.av_strerror 3.其他错误码解释 二.编解码 1.获取编解码器 2.申请.释放上下文环境 3.打开编码器avcodec_open ...

  6. 【ES6】Generator函数详解

    [ES6]Generator函数详解 一.Generator函数简介 基本概念 函数写法 yield关键字介绍 二.next方法的参数 三.for...of循环 四.关于普通throw()与Gener ...

  7. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  8. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  9. python基础知识~ 函数详解2

    python~函数详解2  1 生成器函数    定义 如果函数有yield这个关键字,就是生成器函数.生成器函数() 获取的是生成器,不执行函数   须知 yield和return一样,都可以返回数 ...

  10. scanf函数详解与缓冲区

    1.基本信息 函数原型: int scanf( char *format, args, ...); 函数返回值: 读入并赋给args的数据个数,遇到文件结束返回EOF,出错返回0. 函数功能: sca ...

最新文章

  1. python3调用OCR识别
  2. 30~60万|项目需求——胳膊与手指的动态识别技术
  3. oracle+数据到+mysql数据库乱码问题_Linux系统Oracle数据库乱码问题的解决方法
  4. frp 路由穿透(github开源穿透软件)
  5. php 递归格式化数组,利用php递归实现无限分类 格式化数组的详解
  6. 安卓案例:基于HttpURLConnection下载文本与图片
  7. Kafka 如何保证消息全局有序
  8. JavaScript通过style只能获取内联 状态的样式
  9. mysql如何只查询表中的前几条数据?多表查询前提了解
  10. AWS SageMaker 基于Random Cut Forest 的异常值检测 随机森林
  11. Java项目源码下载SSM网上水果生鲜超市商城|电商购物系统
  12. C# 之 观察者模式实例 -- 订牛奶
  13. java网络编程--TCP程序设计
  14. 怎么准备全国计算机二级(C语言)考试?
  15. 2023.02.09 草图大师厨房效果图1skp素材效果图
  16. GoogleCast 简介
  17. 国企的面试我们应该怎么准备?
  18. 宗地权属图生成的解决方案设计
  19. 贝叶斯例题(一)先验分布与后验分布
  20. Android学习之仿QQ侧滑功能的实现

热门文章

  1. bandicam安装及使用教学
  2. python微信公众号翻译功能_Python实现微信翻译机器人的方法
  3. 微信表白神秘代码!快发给ta!(学习资料)
  4. cad中计算机的快捷键,CAD中一些常用的快捷键用法
  5. 【笔记】统计pdf文件中的字数
  6. 《缠中说禅108课》57:当下图解分析再示范
  7. cad角度怎么画_初学入门CAD,就这样成精了!
  8. VxLAN技术基本原理
  9. 旧主机改NAS最终成功的过程
  10. 大数据入门教程系列之Hive篇汇总