Lomo's BLOG

行之而不著焉 习矣而不察焉 终身由之而不知其道也 众也 ~
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《Linux程序设计》- Chapter3 - 读书笔记

Posted on 2005-08-22 10:43  Lomo  阅读(261)  评论(0)    收藏  举报

Chapter3:

    1、在Unix里,文件就是一切。

    2、用来访问底层设备驱动程序的系统调用:open , read ,  write , close , ioctrl;

    3、open操作的权限参数,定义在/sys/stat.h:

       

    4、文件类型标志包括:

       

    5、 标准IO库:

        fopen函数:主要用于文件和终端的输入输出方面,操作成功将返回一个指针FILE *,否则返回NULL;

        fread / fwrite函数:从文件流里读取数据到缓冲 / 从缓冲取数据写入文件流;

        fclose函数:关闭文件流,使所有还未写入文件的数据写入;

        fflush函数:把文件流里的现有数据立即写入文件;

        fseek函数:在文件流中为下一次操作设置指针;

        格式化输入输出:(略);

        文件流和文件描述符的关系:每个文件流都和底层的一个文件描述符相关联;

    6、chmod系统调用可以对文件或目录的访问权限进行修改;chown系统调用可以对文件的属主进行修改;

    7、mkdir/rmdir:添加/删除子目录;chdir切换目录;getcwd获取当前工作目录;

    8、readdir函数用于扫描子目录,它将返回一个指针,指针指向子目录流drip里的下一个目录数据项的有关资料;seekdir用于对当前子目录流drip里的数据项指针进行设置;

    9、fcntl系统调用对底层文件描述符提供更高级的手段,实现对文件的复制,加锁等等操作;

    10、mmap允许对一段内存进行设置,让多个程序共享内存。这一点应用到文件系统中,用户可以使某个磁盘文件的所有内容看起来就像是内存中的某个数组,可以通过存取结构数组来实现对问文件内容的修改,这其中,要求有一个由特殊权限控制的虚拟内存段来映射磁盘。

        void *mmp(void *addr , size_t len , int prot , int flags , int fields , off_t off)

        fields -文件描述符;addr-通过它可以申请某个特定内存区域,如果它为零,则自动分配;prot-设置内存访问权限;flags-内存访问方式(MAP_PRIVATE / MAP_SHARED / MAP_FIXED);

        msync用于将该内存段的修改部分或整体写回到映射的文件中;

        munmap函数的作用是释放内存段。