zoukankan      html  css  js  c++  java
  • Unix环境高级编程学习笔记(三)

    文件 描述符

    每打开一个文件或者创建一个文件,就返回一个文件描述符。

    描述符0 对应 标准输入

    描述符1 对应 标准输出

    描述符2 对应 标准出错

    文件描述符的范围是0~OPEN_MAX

    OPEN 函数

    #include<fcnt1.h>
    
    int open(const char *pathname, int oflag, mode_t mode)
    
    成功返回描述符,错误返回-1

    open返回的文件描述符一定是最小未用的描述符数值。(例子:关闭标准输出,在打开一个文件,则文件一定会在标准输出打开)

    creat函数

    #include《fcnt1.h》
    int creat(const char *pathname, mode_t mode);
       成功返回描述符,出错返回-1

    此函数等效于

    open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);

    而且open 函数优于creat 函数。

    close函数

    关闭一个已经打开的文件

    int close (int fileds)

    lseek函数

    修改一个文件的偏移量。

    #include<unist.d>
    off_t lseek(int fileds, off_t offset, int whence)
    成功返回新偏移量,出错返回-1

    offset的解释与whence有关,

    一个标准输入复制到标准输出的例子:

     1 #include"apue.h"
     2 
     3 #defien BUFFSIZE 4096
     4 
     5 int main(void)
     6 {
     7     int n;
     8     char buf[BUFFSIZE];
     9 
    10     while((n = read(STDIN_FILENO, buf,BUFFSIZE)) > 0)
    11         if (write(STDOUT_FILENO, buf, n) != n)
    12             err_sys("write error");
    13     
    14     if (n < 0)
    15         err_sys("read error");
    16     exit(0);
    17 }

    文件共享

    不同进程间共享打开的文件。

    文件共享的原理:每个进程在进程表中有一个标识符空间,里面存储了对应这个打开进程的文件表的指针。文件表中含有:文件状态标识,文件偏移量和V节点指针。V节点指针又会指向一个V节点表。 

    然而每个文件的V节点表是独一无二的。两个进程同时指向一个V节点表时,这样就完成了文件共享。

     

  • 相关阅读:
    希尔排序例子
    C
    重构最大堆的例子
    基于堆的优先队列和用优先队列排序的例子
    堆排序例子
    分治法示例
    三路划分的快速排序算法
    二叉搜索例子
    标准快速排序
    【转载】JAVA5新特性
  • 原文地址:https://www.cnblogs.com/yestreen/p/3052600.html
Copyright © 2011-2022 走看看