BlueClue's Tech Blog

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

随笔分类 -  Linux编程

摘要:描述文件夹属性结构体struct dirent(可参考在线文档)的最后一个成员d_name,用以存储文件名称, 一些类Unix系统也会采用下面的定义:struct dirent{ ino_t d_ino; off_t d_off; unsigned short d_reclen; char d_name[1];};显然对于一个用来存储字符串的数组,一个字节的空间只够存一个结束符'\0'的,这样做的目的是在利用struct dirent申请内存空间的时候,d_name可以按需申请,而不需要一... 阅读全文
posted @ 2012-01-13 10:39 blueclue 阅读(4304) 评论(0) 推荐(0)

摘要:对于Linux系统编程的学习,个人认为读两本书就已经足够,一本是《Unix\Linux编程实践教程》,国外的经典教材,作者将Linux系统编程的相关内容分门别类划分的非常条理,将难以理解的Linux系统内部模型和交互过程做了3D建模,非常直观的将我们脑子里的谜团揉开、展现、分析,对于一些比较纠结的问题,作者做了恰当有趣的比喻,例如将用户模式和内核模式的切换比作肯特电话亭换衣服变超人,对于概念的讲解简洁明了,尽求达意,不说教,可读性很强;另一本就是圣经级的《UNIX环境高级编程》,在众多同行心目中地位崇高,但是不要被书的名字吓倒,我刚刚读完前三章并翻了翻后面,这本书与高级无关,从基础讲起由浅入深,与第一本书相比要求读者具备C基础,但第一本书每章后面的习题难度也不小,其它暂不作评价。 阅读全文
posted @ 2011-11-26 14:22 blueclue 阅读(686) 评论(0) 推荐(0)

摘要:head和tail 他们看起来跟cat好像是近亲,做的事情差不多,都是读取文件内容,head从文件头读起,tai则从文件尾读取,默认读取10行并打印,这里两个命令都只实现了默认打印10行和指定打印行数参数-n。 阅读全文
posted @ 2011-11-08 19:41 blueclue 阅读(5057) 评论(0) 推荐(0)

摘要:read、write所在空间为“用户空间”,大框底部的空间为“内核空间”,访问任何硬件设备包括磁盘都要经过“内核空间”这一层,但是在“用户模式”下只能访问“用户空间”,要访问“内核空间”需要从“用户模式”切换到“管理员模式”,书中还对这个过程做了个形象的比喻: 肯特要到电话亭从“用户模式”切换到“管理员模式”才能变成超人,完成任务在切回记者身份,赚钱糊口(毕竟拯救地球也是义务的,填不了肚子),如果任务多了,就算是超人,找电话亭切来切去,也是很低效的。 缓冲区的设置原理,像是cpu与硬盘之间的内存的作用,也是这么个原理,都知道内存过大是浪费,太小则低效,那么是否存在一个刚刚好的量,我们姑且把这个量称为临界点,Linux内核对于文件I/O交互是否做了控制? 本书对于缓冲区大小测试的量是4096,测试的方法是读一个5M大小的文件将内容写到另一个文件里,测试结果间下表,似乎缓冲区设到40 阅读全文
posted @ 2011-11-02 19:41 blueclue 阅读(2085) 评论(0) 推荐(0)

摘要:能够查看linxu系统源码是类unix系统开源性的体现,是在其他系统享受不到的待遇,我的系统是ubuntu,将查看过程列在下面 阅读全文
posted @ 2011-10-29 12:43 blueclue 阅读(6420) 评论(0) 推荐(0)

摘要:wtmp文件记录了所有的登陆和注销。它的格式与utmp很相似,除了它用空用户名表示某个相关联终端的注销。此外,终端名称~并且用户名为shutdown或者reboot表明系统关闭或者重启,而且当date(1)改变系统时间时,终端名称里为|/}记录了原来的/新的系统时间。wtmp文件记录由login(1),init(8),和一些版本的getty(8)(例如:mingetty(i)或者agetty(8))来维护。这些程序并不创建该文件,所以如果文件被移除,保存记录的功能就被关闭了。查阅login(3)文档,里面有段话,大体意思是讲:login()的时候以struct utmp* ut为参数,用USER_PROCES 阅读全文
posted @ 2011-10-24 13:37 blueclue 阅读(2449) 评论(0) 推荐(0)

摘要:使用utmp、wtmp、utmpx都需要#include ,它们的文件是二进制的,内容实际上是一个utmp结构体序列,该结构体声明在utmp.h文件中,结构成员记录了详细的用户登陆信息,它们的区别在于: wtmp记录了所有登陆和注销记录,格式与用空用户名标记注销的utmp很相似,登陆也好注销也好都是往里面添加数据; 而utmp通过修改文件内容,登陆的时候添加记录,注销时删除记录,只记录当前使用系统的用户信息; utmpx它与utmp结构体相似,区别在于POSIX.1没有指定utmp结构,而是定义为utmpx,它定义了ut_type、ut_pid、ut_line、ut_id、ut_user和ut_tv,并没有设定ut_line、ut_user字段的长度。 阅读全文
posted @ 2011-09-30 19:51 blueclue 阅读(1130) 评论(0) 推荐(0)

摘要:read从当前位置读入指定长度的数据,然后移动当前位置指针,指向下一个未读的数据。当从文件读数据时,内核从指针所标明的地方开始,读取指定的字节,然后移动位置指针,指向下一个未被读取的字节,写文件的操作也是类似的。指针是与文件描述符相关联的,而不是与文件关联,所以如果两个程序同时打开一个文件,这时会有两个指针,两个程序对文件的读操作不会互相干扰。 阅读全文
posted @ 2011-09-15 13:14 blueclue 阅读(1348) 评论(0) 推荐(0)