2011年11月26日 更新
对于Linux系统编程的学习,不包括做某方面的深入研究的话,个人认为读两本书就已经足够,一本是《Unix\Linux编程实践教程》,国外的经典教材,作者将Linux系统编程的相关内容分门别类划分的非常条理,将难以理解的Linux系统内部模型和交互过程做了3D建模,非常直观的将我们脑子里的谜团揉开、展现、分析,对于一些比较纠结的问题,作者做了恰当有趣的比喻,例如将用户模式和内核模式的切换比作肯特电话亭换衣服变超人,对于概念的讲解简洁明了,尽求达意,不说教,可读性很强;另一本就是圣经级的《UNIX环境高级编程》,在众多同行心目中地位崇高,但是不要被书的名字吓倒,我刚刚读完前三章并翻了翻后面,这本书与高级无关,从基础讲起由浅入深,与第一本书相比要求读者具备较好的C基础,但第一本书每章后面的习题难度也不小,其它暂不作评价。
学习过程从Linux的系统调用着手,如果说系统内核是沟通硬件和软件的中介,那么系统调用就是我们与内核沟通的桥梁,从linux常用工具入手,实现程度和手段不比其源码,只能算是学习到一定阶段的总结性笔记,文中代码只求实现不求最佳,所以只可作为学习研究之用。
2011年11月26日
普通程序与系统编程的区别:编写普通程序时可以认为,程序是直接连接到键盘、显示器、磁盘等设备的,但在进行系统编程时,必须对系统的结构和工作方式有更深的了解。
内核提供服务以便系统程序可以直接访问的系统资源:处理器、输入输出、进程管理、内存、设备、计时器、进程间通信、网络。
常用系统调用,参见:http://www.kernel.org/doc/man-pages/online/dir_section_2.html
常用库函数,参见:http://www.kernel.org/doc/man-pages/online/dir_section_3.html
2011年11月26日
文件操作相关系统调用
open、read、write、creat、lseek、close
2011-9-15 Linux编程实践——文件操作里神秘的当前指针
2011-9-30 Linux编程实践——用户登陆注销的记录者
2011-10-24 Linux编程实践——代码实现ac命令
2011-11-2 Linux编程实践——文件I/O缓冲区测试及cat简单实现
2011-11-8 Linux编程实践——head和tail的实现
2011年11月26日
目录及文件属性
rwx,对于文件而言,代表可读、可写、可执行,对于目录而言,目录本身可理解为文件,它记录了所包含文件的索引列表,读写执行对它意味着目录文件本身的读取、写操作对于目录而言就是改变目录内的内容(添加、删除其中的文件或目录)、执行意味着是否可以进入该目录。
相关系统调用和函数
- opendir、readdir、closedir、seekdir
- stat
- chmod、chown、utime
- rename
2011-1-13 struct dirent的char d_name[1]成员