UNIX环境高级编程读书笔记

我开始认识到笔记有2个部分

1. 总结知识点,将知识以简洁有序的方式呈现出来(也是学习过程的一个重要部分)。把书读薄

2. 考虑书中的细节,做讨论,还是把结果适度(该简洁的简洁,该详细的详细)地呈现出来。把书读厚

原则上知识获取的过程以及结果的表示可以通过文字记录下来。          

 这里先读薄,摘要点。

 

第一章 UNIX基础知识

1. 高级语言的运行与底层(操作系统,计算机机器指令&硬件)有关,可以研究下一个C程序是具体怎么在linux环境下编译的,又是怎么运行的来加深理解。

   从操作系统来看,可以理解为:它为上层提供了一个 系统调用=system call 的接口。

   LINUX具体的,system-call上又建立了库函数,system-call与库函数可以认为共同构建了UNIX的编程环境。

 

2. UNIX标准化以及实现

信息量有些大,我试着总结下:

i)主要的标准有

  ANSI C(ANSI 是美国标准化组织,是OSI的成员),有24个区

  IEEE: POSIX,是ANSI C的超集,是操作系统的接口定义(可以看到C是一种面向机器的系统级语言),除了ANSI C之外

主要包含必需,XSI扩展,可选3种头文件。

  Open Group: SUS(Single UNIX Specification),Open Group 拥有Unix的商标,现在一般认为SUS是POSIX的超集。

ii)Unix系统实现

出现了一个“限制”的概念,在SUS前提下某具体UNIX系统对可变的“限制”提供了具体的回答。

函数sysconf,pathconf,fpathconf查找限定值。

 

 3. 文件I/O

  核心概念是进程的task_struct包含struct files_struct *files,files_struct则包含许多文件表项(int 文件描述符,* file结构体)files_struct维护着打开的文件(一个文件也可以多次打开),file结构体则维护打开的相关信息比如文件对象inode指针,文件打开方式,文件偏移。

 files_struct=(int i, file_open)------->file_open=(mode,offset,link_to_file) 

   相关的函数操作有open,creat,close,lseek,read,write,dup/dup2(新建文件打开指向同个file_open),sync/fsync/fdatasync(缓存操作),fcntl(改变打开文件的属性),ioctl(其他函数)。

4. 文件与目录

 

posted on 2014-06-14 21:55  xiahong  阅读(397)  评论(0)    收藏  举报