body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;} th{border: 1px solid gray; padding: 4px; background-color: #DDD;} td{border: 1px solid gray; padding: 4px;} tr:nth-child(2n){background-color: #f8f8f8;}

文件定位

函数 lseek() 将文件指针设定到相对于 whence ,偏移值为 offset 的位置

#include <sys/types.h>
#include <unistd.h>
off_t  lseek(int fd,  off_t offset,  int whence);   //fd文件描述词
whence 可以是下面三个常量的一个:
SEEK_SET  从文件头开始计算
SEEK_CUR  从当前指针开始计算
SEEK_END  从文件尾开始计算

利用该函数可以实现文件空洞(对一个新建的空文件,可以定位到偏移文件开头1024个节的地方,再写入一个字符(可以是换行或者"\0"),则相当于给该文件分配了1025个字节的空间,形成文件空洞)通常用于多进程间通信的时候的共享内存。
test.c
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#include<stdio.h>
int main()
{
    int fd = open("c.txt", O_WRONLY | O_CREAT,0666);
//  int fd = open("./c.txt", O_WRONLY);
    lseek(fd, 10, SEEK_SET);
    write(fd, "a", 1);    //"a",必须是双引号,代表一个字符串常量的首地址,不能使‘’
   // write(fd,"\0",1);   //这样写用在多进程通信
    close(fd);
    return 0;
}

// c.txt 的文件大小现在是11 

test.c
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdio.h>

int main(int argc,char **argv)
{
        int fd = open(argv[1],O_RDWR);
        char buf[128];
        read(fd,buf,2);
        printf("buf =%s\n",buf);
        strcpy(buf,",world!");
        lseek(fd,0,SEEK_SET);  //偏移到文件开头,产生覆盖
        write(fd,buf,strlen(buf));
        close(fd);
        return 0;
}

LINUX文件定位的更多相关文章

  1. Linux如何定位文件在磁盘的物理位置

    我在学习研究Linux内核结构的时候,思考过一个问题:Linux如何定位文件在磁盘的物理位置每个文件都有一个inode,inode在内核代码中的数据结构如下: 1 struct ext4_inode ...

  2. Linux文件查找.md

    Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 w ...

  3. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

  4. Linux文件操作学习总结【转载】

    本文转载自: http://blog.csdn.net/xiaoweibeibei/article/details/6556951 文件类型:普通文件(文本文件,二进制文件).目录文件.链接文件.设备 ...

  5. Linux文件系统概述

    Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容. Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序 ...

  6. LINUX文件格式化读写(文件指针,缓冲)

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  7. Linux 文件IO管理 - POSIX

    以下是对POSIX的简短解释: POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操 ...

  8. linux文件编程----系统调用

    linux中文件编程可以使用两种方法: 1).linux系统调用 2).C语言库函数 前者依赖于linux系统,后者与操作系统是独立的. 在 linux系统中,所有打开的文件也对应一个数字,这个数字由 ...

  9. 2.Linux文件IO编程

    2.1Linux文件IO概述 2.1.0POSIX规范 POSIX:(Portable Operating System Interface)可移植操作系统接口规范. 由IEEE制定,是为了提高UNI ...

随机推荐

  1. Spring Boot项目构建

    环境准备 IDEA+JDK 1.8+Maven+mysql+SSM 1.使用Spring Boot框架可以大大加速Web应用的开发过程,首先在Maven项目依赖中引入spring-boot-start ...

  2. Java泛型集合

    所谓泛型就是允许在定义类.接口时指定类型形参,这个类型形参将在声明变量.创建对象时确定.增加了泛型支持后的集合,完全可以记住集合 中元素的类型,并可以在编译时检查集合中元素的类型.即解决一些安全问题, ...

  3. Codeforces 834E The Bakery【枚举+数位dp】

    E. Ever-Hungry Krakozyabra time limit per test:1 second memory limit per test:256 megabytes input:st ...

  4. BZOJ3676: [Apio2014]回文串(回文树)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3676 这叫模版题TAT #include<cstring> #include< ...

  5. 51 Nod 1119

    机器人走方格 V2 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N ...

  6. HDU--2115

    I Love This Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. Android扫码二维码、美女瀑布流、知乎网易音乐、动画源码等

    Android精选源码 QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生...   一个简洁好看的loading弹窗   Android用瀑布流展示美女图片源码   Android知乎阅读 ...

  8. SSH防爆破脚本

    github地址:https://github.com/demonxian3/LittleScript/blob/master/SSHprotecter.sh 使用方法: 1.给足脚本权限,chmod ...

  9. javaScript原生定义的函数

    1.JavaScript中的算术运算 包括加(+).减(-).乘(*).除(/)和求余(取模)(%)运算,除了这些基本的运算外,JavaScript还支持更加复杂的算术运算,这些复杂算术运算作为Mat ...

  10. 获取Object对象的length

    所有JS程序猿(甚至不止JS)都知道,数组(Array)是有length的,通过length属性,可以很方便的获取数组的长度.可以说,只要使用到了数组,就必会使用到其length属性. 而Object ...