zoukankan      html  css  js  c++  java
  • Linux文件 I/O 介绍

     

    Linux文件 I/O 介绍

    1. Linux系统调用

    Linux系统调用(system call)是指操作系统提供给用户程序的一组“特殊接口”,用户程序可以通过这组“特殊”接口来获得操作系统提供的特殊服务。

    为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。在Linux中,用户程序不能直接访问内核提供的服务,必须通过系统调用来使用内核提供的服务。

    Linux中的用户编程接口(API)遵循了UNIX中最流行的应用编程界面标准——POSIX。这些系统调用编程接口主要是通过C库(libc)实现的。

    2. 文件描述符

    对内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数

    在linux中文件描述符的范围是0~OPEN_MAX。

    当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当写一个文件时,用open或create返回的文件描述符标识该文件,将其作为参数传送给read或write。

    在POSIX应用程序中,整数0、1、2应被代换成符号常数:

    STDIN_FILENO(标准输入,默认是键盘) STDOUT_FILENO(标准输出,默认是屏幕) STDERR_FILENO(标准错误输出,默认是屏幕),这些内容通常定义在 </usr/include/unistd.h>中。

    Linux中每个进程在创建时,都会打开三个文件,这三个文件就是stdin、stdout、stderr,他们对应的文件描述符为0、1、2。在默认情况下使用open()打开文件时,分配的是最小未用文件描述符。

    3. Liunx文件I/O 

    文件I/O没有缓冲

      不带缓冲是指每个read和write都是调用内核中相应的系统调用。

      不带缓冲的I/O函数不是ANSI C的组成部分,但是是POSIX和XPG3的组成部分。

    文件I/O通过文件描述符来访问文件

    Linux提供可用的文件I/O函数很多,其中比较常用的有:打开文件,读文件,写文件等。大多数Linux文件IO只需要用到5个函数:open,read,write,lseek以及close。

  • 相关阅读:
    C#中将dll汇入exe,并加壳
    很不错的在线格式转换网站
    Eclipse快捷键大全
    win7休眠的开启与关闭方法
    C#实现注册码
    Microsoft.CSharp.targets不存在解决方法
    数据库>SQL Server2005>第4季SQL从入门到提高>2SQL Server使用
    main函数名字写错,写成mian等等的错误提示
    CSS选择器
    斐波那契数的实现
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6023097.html
Copyright © 2011-2022 走看看