您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > linux-sys.zh
Linux系统编程传智播客-邢文鹏12014-09-271前言学习目标成为linux/unix系统程序员学习态度*谦虚*严谨*勤思*善问学习方法从本章开始学习各种Linux系统函数,这些函数的用法必须结合Linux内核的工作原理来理解,因为系统函数正是内核提供给应用程序的接口,而要理解内核的工作原理,必须熟练掌握C语言,因为内核也是用C语言写的,我们在描述内核工作原理时必然要用“指针”、“结构体”、“链表”这些名词来组织语言,就像只有掌握了英语才能看懂英文书一样,只有学好了C语言才能看懂我描述的内核工作原理。读者看到这里应该已经熟练掌握了C语言了,所以应该有一个很好的起点了。我们在介绍C标准库时并不试图把所有库函数讲一遍,而是通过介绍一部分常用函数让读者把握库函数的基本用法,在掌握了方法之后,书上没讲的库函数读者应该自己查ManPage学会使用。同样,本书的第三部分也并不试图把所有的系统函数讲一遍,而是通过介绍一部分系统函数让读者理解操作系统各部分的工作原理,在有了这个基础之后就应该能够看懂ManPage学习其它系统函数的用法。读者可以结合[APUE2e]学习本书的第三部分,该书在讲解系统函数方面更加全面,但对于内核工作原理涉及得不够深入,而且假定读者具有一定的操作系统基础知识,所以并不适合初学者。该书还有一点非常不适合初学者,作者不辞劳苦,在N多种UNIX系统上做了实验,分析了它们的内核代码,把每个系统函数在各种UNIX系统上的不兼容特性总结得非常详细,很多开发者需要编写可移植的应用程序,一定爱死他了,但初学者看了大段大段的这种描述(某某函数在4.2BSD上怎么样,到4.4BSD又改成怎么样了,在SVR4上怎么样,到Solaris又改成怎么样了,现在POSIX标准是怎么统一的,还有哪些系统没有完全遵守POSIX标准)只会一头雾水,不看倒还明白,越看越不明白了。也正因为该书要兼顾各种UNIX系统,所以没法深入讲解内核的工作原理,因为每种UNIX系统的内核都不一样。而本书的侧重点则不同,只讲Linux平台的特性,只讲Linux内核的工作原理,涉及体系结构时只讲x86平台,对于初学者来说,绑定到一个明确的平台上学习就不会觉得太抽象了。当然本书的代码也会尽量兼顾可移植性,避免依赖于Linux平台特有的一些特性。只听不练肯定学不会Linux,每个知识点都需要去动手实践目录前言i目录iii1文件I/O11.1C标准函数与系统函数的区别.....................11.1.1I/O缓冲区..........................11.1.2效率............................11.1.3程序的跨平台性.......................11.2PCB概念..............................21.2.1task_struct结构体......................21.2.2files_struct结构体.....................21.3open/close.............................21.3.1文件描述符.........................21.3.2最大打开文件个数......................41.4read/write.............................51.5阻塞和非阻塞............................61.5.1阻塞读终端.........................61.5.2非阻塞读终端........................81.5.3非阻塞读终端和等待超时...................91.6lseek...............................91.7fcntl...............................101.7.1用fcntl改变FileStatusFlag.................101.8ioctl...............................111.9习题................................122文件系统152.1ext2文件系统............................152.1.1目录中记录项文件类型....................162.1.2数据块寻址.........................172.2stat................................172.3chmod...............................182.4chown...............................182.5utime...............................192.6truncate..............................192.7link................................192.7.1link............................192.7.2symlink...........................202.7.3readlink..........................202.7.4unlink...........................202.8rename...............................202.9chdir...............................202.10getcwd...............................202.11pathconf..............................212.12目录操作..............................212.12.1mkdir............................212.12.2rmdir............................212.12.3opendir/fdopendir......................212.12.4readdir...........................212.12.5rewinddir..........................222.12.6telldir/seekdir.......................222.12.7closedir..........................222.12.8递归遍历目录........................222.13VFS虚拟文件系统..........................242.13.1dup/dup2..........................242.14练习................................263进程273.1进程环境..............................283.2进程状态..............................303.3进程原语..............................303.3.1fork............................303.3.2exec族...........................323.3.3wait/waitpid........................353.4练习................................374进程间通信394.1pipe管道..............................394.2fifo有名管道............................414.3内存共享映射............................424.3.1mmap/munmap.........................424.3.2进程间共享通信.......................444.4UnixDomainSocket.........................464.5习题................................465信号495.1信号的概念.............................495.1.1信号编号..........................495.1.2信号机制..........................495.1.3信号产生种类........................505.1.4信号产生原因........................515.2进程处理信号行为..........................525.3信号集处理函数...........................535.4PCB的信号集............................535.4.1sigprocmask.........................535.4.2sigpending.........................545.5信号捕捉设定............................555.5.1利用SIGUSR1和SIGUSR2实现父子进程同步输出..........565.6C标准库信号处理函数........................565.6.1signal...........................565.7可重入函数.............................565.8信号引起的竞态和异步I/O......................575.8.1时序竞态..........................575.8.2全局变量异步I/O.......................585.8.3可重入函数.........................585.8.4避免异步I/O的类型......................595.9SIGCHLD信号处理..........................595.9.1SIGCHLD的产生条件......................595.9.2status处理方式.......................605.10向信号捕捉函数传参.........................615.10.1sigqueue..........................615.10.2sigaction..........................615.11信号中断系统调用..........................615.12练习................................616进程间关系636.1终端................................636.1.1网络终端..........................646.2进程组...............................656.3会话................................667守护进程697.1概念................................697.2模型................................697.3习题..........................
本文标题:linux-sys.zh
链接地址:https://www.777doc.com/doc-4752014 .html