• read系统调用

    一旦有了与一个打开文件描述相连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节

    函数原型:

    #include <unistd.h>

    ssize_t read(int fd, void *buf, size_t count);

    参数

    fd :想要读的文件的文件描述符

    buf : 指向内存块的指针,从文件中读取来的字节放到这个内存块中

    count : 从该文件复制到buf中的字节个数

    返回值

    如果出现错误,返回-1

    读文件结束,返回0

    否则返回从该文件复制到规定的缓冲区中的字节数

    否则返回从该文件复制到规定的缓冲区中的字节数

  • write系统调用

    用write()系统调用将数据写到一个文件中

    函数原型:

    #include <unistd.h>

    ssize_t write(int fd, const void *buf, size_t count);

    函数参数:

    -fd:要写入的文件的文件描述符

    -buf:指向内存块的指针,从这个内存块中读取数据写入 到文件中

    -count:要写入文件的字节个数

    返回值

    如果出现错误,返回-1

    注:write并非真正写入磁盘,而是先写入内存缓冲区,待缓冲区满或进行刷新操作后才真正写入磁盘,若想实时写入磁盘可调用

    int fsync(int fd);或在open时flags加上O_SYNC

  • 利用read和write进行文件拷贝

    程序代码:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <fcntl.h>
    5.  
    6. #define EXIT_ERR(m) \
    7. do{\
    8. perror(m);\
    9. exit(EXIT_FAILURE);\
    10. }while()
    11. int main(int argc, char **argv)
    12. {
    13. int infd;
    14. int outfd;
    15. if(argc != ){
    16. fprintf(stderr,"usage:%s src des\n",argv[]);
    17. exit(EXIT_FAILURE);
    18. }
    19. if((infd = open(argv[],O_RDONLY)) == -)
    20. EXIT_ERR("open error");
    21. if((outfd = open(argv[],O_WRONLY|O_CREAT|O_TRUNC,)) == -)
    22. EXIT_ERR("OPEN ERROR");
    23. char buf[];
    24. int n;
    25. while((n = read(infd, buf, )) > ){
    26. write(outfd, buf, n);
    27. }
    28. close(infd);
    29. close(outfd);
    30. return ;
    31. }

测试结果:

linux系统编程之文件与IO(二):系统调用read和write的更多相关文章

  1. linux系统编程之文件与io(二)

    今天继续学习文件与io,话不多说,开始进入正题: 文件的read和write系统调用: 说明:函数中出现在size_t和ssize_t是针对系统定制的数据类型:     下面以一个实现文件简单拷贝的示 ...

  2. linux系统编程之文件与io(一)

    经过了漫长的学习,C语言相关的的基础知识算是告一段落了,这也是尝试用写博客的形式来学习c语言,回过头来看,虽说可能写的内容有些比较简单,但是个人感觉是有史起来学习最踏实的一次,因为里面的每个实验都是自 ...

  3. linux系统编程之文件与io(五)

    上一节中已经学习了文件描述符的复制,复制方法有三种,其中最后一种fcntl还并未使用到,关于这个函数,不光只有复制文件描述符的功能,还有其它一些用法,本节就对其进行一一剖析: fcntl常用操作: 这 ...

  4. linux系统编程之文件与io(四)

    今天继续学习文件与io,主要是学习文件共享及文件.复制文件描述符,有点抽象,主要是概念上的理解,但是很重要,下面一一来分解: 文件共享: 回顾一下,在linux系统调用中,是通过文件描述符来访问文件的 ...

  5. linux系统编程之文件与IO(一):文件描述符、open,close

    什么是IO? 输入/输出是主存和外部设备之间拷贝数据的过程 设备->内存(输入操作) 内存->设备(输出操作) 高级I/O ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的 ...

  6. linux系统编程之文件与IO(七):时间函数小结

    从系统时钟获取时间方式 time函数介绍: 1.函数名称: localtime 2.函数名称: asctime 3.函数名称: ctime 4.函数名称: difftime 5.函数名称: gmtim ...

  7. linux系统编程之文件与IO(三):利用lseek()创建空洞文件

    一.lseek()系统调用 功能说明: 通过指定相对于开始位置.当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置 函数原型: #include <sys/ ...

  8. linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl

    本节目标: 1,文件共享 打开文件内核数据结构 一个进程两次打开同一个文件 两个进程打开同一个文件 2,复制文件描述符(dup.dup2.fcntl) 一,文件共享 1,一个进程打开两个文件内核数据结 ...

  9. linux系统编程之文件与IO(四):目录访问相关系统调用

    1. 目录操作相关的系统调用     1.1 mkdir和rmdir系统调用     1.1.1 实例     1.2 chdir, getcwd系统调用     1.2.1 实例     1.3 o ...

随机推荐

  1. java socket编程--聊天小案例

    很久以前写过socket聊天室,都快忘完了,心血来潮又重新写一遍. 服务器端: package com.fancy; import java.io.BufferedReader; import jav ...

  2. ajax返回填充的数据不显示

    原因:样式与id引用了其他的css或者js,删除其他样式,改变id就可以了

  3. svn搭建相关

    转载至:http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/ 安装步骤如下: 1.yum install ...

  4. 利用X.509证书对XML进行加密和签名

    综述       XML加密和签名技术应用非常广泛. ASP.NET 使用XML加密对配置信息进行加密:InfoPath使用XML签名对表单进行签名:Web服务使用XML加密和签名对SOAP消息进行加 ...

  5. Kendo UI 的弹框

    弹出代码: "use strict"; (function (kendo) { kendo.messageShow = function (message, option) { v ...

  6. Codeforces 709C 模拟

    C. Letters Cyclic Shift time limit per test:1 second memory limit per test:256 megabytes input:stand ...

  7. VK Cup 2016 D. Bear and Two Paths 模拟

    D. Bear and Two Paths time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  8. Hibernate中常见的异常处理

    本文引自:http://www.blogjava.net/sy1214520/archive/2008/10/21/235667.html 本文总结Hibernate中常见的异常. 1. net.sf ...

  9. 编译 link

    --generating dsym file change the appropriate one from 'DWARF with dSYM file' to just 'DWARF',This s ...

  10. Java代码实现依赖注入

    http://zhangjunhd.blog.51cto.com/113473/126545 这里将模仿Spring实现一种基于xml配置文件的依赖注入机制.文件中将实现3中注入,一是单值注入,包括i ...