zoukankan      html  css  js  c++  java
  • Unix高级环境编程 学习小结(一)

    这个系列的博客主要是针对Unix高级环境编程的内容做一个小结,针对的是面试中经常问道或者可能问到的问题。

    Unix体系结构:

    环境的核心是内核,内核的接口被称为系统调用,公用函数库建立在系统调用接口只上,应用程序既可使用系统调用,也可以使用公用函数库。Shell是一个特殊的应用程序,为运行其他程序提供了接口。

    Shell有很多种,最常用的是/bin/sh下面的Shell。

    输入输出:

    文件描述符:通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件,打开文件或创建文件的时候都会返回文件描述符。

    标准输入、输出、错误:每当一个新程序运行时,Shell都会为其打开三个文件描述符,负责输入,输出,和错误。这三个描述符都链接向终端。可以使用>  <等符号重定向流。

    不带缓冲的IO:函数open,read,write,lseek,close提供了不带缓冲的IO,稍后会写细节。

    标准IO:常见的是Printf,getc,putc。

    文件I/O:

    函数open和openat:

    用户打开文件,参数为路径,和flag

    flag参数主要制定打开方式,如只读,只写,追加等等非常非常多的操作,具体使用和详解可以查表。

    openat的使用方法一样,只是openat可以使用相对路径打开文件,open只能使用绝对路径。

    函数lseek:

    每个打开的文件都有与其相关的文件偏移量,他通常是一个非负整数,用以度量从文件开始处计算的字节数。同样,调用该方法时也需要传递flag参数,根据不同的情况设置不同的偏移量。

    Unix文件系统:

    内核使用三种数据结构表示打开文件,他们之间的关系决定了在文件共享方面的一个进程对另外一个进程可能产生的影响

    (1)每个进程在进程表中都有一个记录项,记录项中包含一张打开的文件描述符的表,可将其视为一个矢量,每个描述符占用一项,与每个文件描述符相关联的是:

      a.文件描述符标志。

      b.指向一个文件表项的指针。

    (2)内核为所有打开的文件维持一张文件表,每个文件表项包含:

      a.文件状态标志(读,写,追加写,同步,非阻塞等)

      b.当前文件偏移量

      c.指向该文件v节点表项的指针

    (3)每个打开的文件(设备也算),都有一个v节点结构,v节点包含了文件类型和对此文件进行各种操作函数的指针,对于大多数文件,v节点还包含了该文件的i节点(i-node 索引结点)。这些信息是在打开文件时从磁盘上读入内存的,所以,文件的所有相关信息都是随时可用的,例如,i节点包含了文件的所有者,文件长度,指向文件的实际数据块在磁盘上的所在位置的指针等。

    黏着位:

      程序第一次被执行后,在终止时,如果设置了该黏着位,会在内存中保存一份副本,下次执行时能更快载入内存。

  • 相关阅读:
    又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!
    又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!
    USACO 2006 November Gold Corn Fields
    SCOI 2005 互不侵犯
    PKU P2411 Mondriaan's Dream
    一道装呀(状压)DP
    继续写高精!noip2012国王游戏。。。
    上两道省选的高精吧!
    找丑数
    本地访问weblogic控制台无反应,关闭linux操作系统防火墙
  • 原文地址:https://www.cnblogs.com/derek-dhw/p/11096224.html
Copyright © 2011-2022 走看看