《Unix环境高级编程》读书笔记 第4章-文件和目录,unix环境高级编程
《Unix环境高级编程》读书笔记 第4章-文件和目录,unix环境高级编程
1. stat结构的基本形式:
2. 函数stat、fstat、fstatat、lstat
- 函数名首位的“f”常常代表“该函数是通过文件描述符fd(而不是路径名)对文件进行操作的”
3. 文件类型
- 普通文件 -
- 目录文件 d
- 块特殊文件 b
- 字符特殊文件 c
- FIFO p
- 套接字 s
符号链接 l
文件类型宏:参数为stat结构中的st_mode成员(文件模式字)
IPC类型宏:参数为stat结构的指针
- 与
每个进程关联的用户ID和组ID
,包括实际用户ID、有效用户ID、保存的设置用户ID。 实际用户ID指的是执行该程序的用户的ID。注意区别于
文件的所有者
。每个文件有一个所有者和组所有者,由stat结构中的st_uid, st_gid指定。
- 当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID。但是,可以在文件模式字(st_mode)中设置一个标志,使其“当执行该程序文件时,将进程的有效用户ID设置为文件所有者的ID(st_uid)”。进程的有效组ID类似,在文件模式字st_mode中的这两位标志被称为SUID和SGID。可使用常量S_ISUID和S_ISGID测试。
- 应用:passwd命令
5. 文件访问权限
所有文件类型都有访问权限
进程每次打开、创建或删除一个文件时,内核就进行文件访问权限测试,这种测试可能涉及文件的所有者(st_uid和st_gid)、进程的有效ID(有效用户ID和有效组ID)、进程的附属组ID。两个所有者ID是文件的性质,而两个有效ID和附属组ID则是进程的性质。
- 内核进行的测试具体如下:
测试文件是否存在,mode为F_OK;测试读/写/执行权限,mode为R_OK、W_OK、X_OK的按位与
8. 函数umask
- 在进程创建一个新文件或新目录时,一定会使用文件模式创建屏蔽字。在文件模式创建屏蔽字中为1的位,在文件mode中的相应位一定被关闭。
- 常用的几种umask值是002、022、027
- 命令umask [-S]
9. 函数chmod、fchmod和fchmodat
- 为了改变一个文件的权限位,进程的有效用户ID必须等于文件的所有者ID,或者该进程具有root权限
10. 粘着位(Sticky bit)
- 针对文件
针对目录- 目录/tmp 和 /var/tmp 是设置粘着位的典型候选者。
11. 函数chown、fchown、fchownat和lchown
- 如果这些函数由非root进程调用,则在成功返回时,该文件的SUID和SGID位都被清除。
12. 文件长度
- stat结构成为st_size表示以
字节
为单位的文件的长度。此字段只对普通文件、目录文件和符号链接有意义。 - 对于普通文件,其文件长度可以是0
- 对于目录,文件长度通常是一个数(如512,4096)的整数倍
- 对于符号链接,文件长度是文件名中的实际字节数,不包含通常C语言用作名字结尾的null字节
大多数现代的UNIX系统提供字段st_blksize和st_blocks。第一个是对文件I/O较合适的块长度,第二个是所分配的实际512字节块块数。
文件中的空洞
空洞是由所设置的偏移量超过文件尾端,并写入了某些数据后造成的。对于没有写过的字节位置,read函数读到的字节是0
13. 文件截断
14. 文件系统
15. 函数link(硬链接)、linkat、unlink、unlinkat、remove
- 大多数实现要求现有的和新建的两个路径名在同一个文件系统中。
- 很多文件系统实现不允许对于目录的硬链接。
- 关闭一个文件时,内核首先检查打开盖文件的进程个数;如果这个计数达到0,内核再去检查其链接计数;如果计数也是0,那么就删除该文件的内容。
- unlink的这种特性进程被程序用来确保即使在程序崩溃时,它所创建的临时文件也不会遗留下来。进程用open或creat创建一个文件,然后立即调用unlink
- remove函数解除对一个文件或目录的链接。对于文件,等同于unlink;对于目录,等同于rmdir。
16. 函数rename和renameat
17. 符号链接(软链接)
引入符号链接是为了避开硬链接的一些限制:
各函数对符号链接的处理:follow 或 not follow
19. 文件的时间
- 各函数对3个文件时间的影响,包括:所操作的文件或目录本身、所操作的文件或目录的父目录
- times数组参数的第一个元素包含访问时间,第二个元素包含修改时间
- futimens函数需要打开文件来更改它的时间;utimensat函数提供了一种使用文件名更改文件时间的方法。
- utimes函数对路径名进行操作,times参数指向访问时间和修改时间,状态更改时间自动更新
21. 函数mkdir、mkdirat、rmdir
22. 读目录
23. 函数chdir、fchdir、getcwd
- 每个进程都有一个当前工作目录。
- 当前工作目录是进程的一个属性,起始目录则是登陆名的一个属性。
24. 设备特殊文件
- 每个文件系统所在的存储设备都由其主、次设备号表示。
- 设备号所用的数据类型是基本系统数据类型dev_t。
- 主设备号标识设备驱动程序,有时编码为与其通信的外设板;次设备号标识特定的子设备。
- 在同一磁盘驱动器上的各文件系统通常具有相同的主设备号,但是次设备号却不同。
- 可以使用两个宏:major和minor来访问主、次设备号。
- 系统中与每个文件名关联的st_dev值是文件系统的设备号,该文件系统包含了这一文件名以及其对应的i节点。
- 只有字符特殊文件和块特殊文件才有st_rdev值。此值包含实际设备的设备号。
25. 文件访问权限位小结
- 参考 man stat
LZ好,【内容精要】
高尔基4岁丧父,10岁丧母,后靠自己努力学习奋斗成为了苏联伟大的文学家,自传三部曲是在列宁的鼓励下写成的,它们独自成篇,又前后相连,艺术地再现了主人公阿辽莎成长历程的三个阶段,真实深刻地反映了19世纪末20世纪初的俄罗斯民众的生活,反映了小市民阶层的庸俗自私和空虚无聊,揭露了沙俄专制的黑暗与罪恶,被视为俄苏自传体小说的里程碑和批判现实主义文学的伟大成就。
《童年》是这套三部曲的第一部,讲述的是高尔基幼年丧父、母亲改嫁,他跟随脾气暴躁的、日渐破落的小染坊主外公外婆生活的童年时光。此书通过一个儿童无邪的眼光,向读者生动地展示了19世纪中叶俄罗斯社会底层人物的生活,描绘了许许多多社会小市民丑陋和愚昧的生活风貌以及当时俄国的宗教、丧葬等民风民俗。高尔基的这些回忆,有助于我们了解沙皇俄国那个时代的风貌,了解一代文学大师高尔基童年时的社会环境。
小阿辽莎的童年生活是“一种浓厚的、色彩斑驳的、离奇得难以形容的生活”,“仿佛是由一个善良而且极端诚实的天才美妙地讲出来的一个悲惨的童话”。在叙述童年生活的过程中,几乎阿辽莎遭遇的每一件比较大的事情,都会引起他一种意识的觉醒,这在作品中的表现就是每一件事情的叙述之后都紧随一句或一段阿辽莎的哲理性的语言。在高尔基的笔下,阿辽莎的生活是出身于下层人民的一些有卓越才华的人的生活,作品反映的是他们的性格形成的过程和意识的成长。
本书不仅有严谨的艺术结构,也有出色的人物形象的塑造。小说着力刻画了阿辽莎、外祖父、外祖母这三个人物。
【写作背景】
《童年》是高尔基自传体小说三部曲中的第一部 。早在19世纪90年代,高尔基就有撰写传记体作品的念头。在1908年至1910年间,列宁到高尔基在意大利卡普里岛的寓所做客,高尔基不止一次地向他讲起自己的童年和少年的生活。有一次,列宁对高尔基说:“您应当把一切都写出来,老朋友,一定要写出来!这一切都是富有极好的教育意义的,极好的!”高尔基说:“将来有一天,我会写出来……”不久,他实现了这个诺言。
高尔基在这本书中真实地描述了自己苦难的童年,反映了当时社会生活的一些典型的特征,特别是绘出了一幅俄国小市民阶层风俗人情的真实生动的图画。它不但揭示了那些“铅样沉重的丑事”,还描绘了作者周围的许多优秀的普通人物,其中外祖母的形象更是俄罗斯文学中最光辉、最富有诗意的形象之一。是这些普通人给了幼小的高尔基良好的影响,使他养成不向丑恶现象屈膝的性格,锻炼成坚强而善良的人。
童年》读后感
初中时代曾读过一些文学名著,其中有一篇就是马克西姆.高尔基的《童年》。高尔基出生在俄国尼日尼·诺夫戈罗德一个木工家庭,早年丧父,寄居在外祖父家,十一岁走向社会,饱尝了人生的辛酸。而《童年》正是根据他童年的生活而写成的,可以说是自传体小说,正反映了当时的社会现状。
小说中的主人公同样是三岁丧父,由母亲和外祖母带到外祖父家。外祖父是一个性情粗暴、自私的小染坊主,但已快濒临破产。而两个舅舅也是同样的粗暴、自私的市侩,甚至他们的儿女也沿袭着这样的风气。阿廖沙就在这样的家庭中饱受虐待:外祖父经常痛打外祖母及孩此文来源于文秘资源网们,有一次竟把阿廖沙打的失去了知觉,结果大病了一场。在这样的环境下阿廖沙幼小的心灵能不觉得恐慌和不安吗?!所以这本书都会令我们每一个人感到不快和压抑,这也是必然的,因为我们每一个人心中都有恻隐之心。
处在这样丑陋的社会,我们不得不担心阿廖沙的心灵会不会也被玷污?但幸好这世界也不完全是丑陋不堪的一面,身边还会有善良正直的人存在,他们给了阿廖沙信心和力量,使他看到了光明和希望......余下全文>>
《钢铁是怎样炼成的》读后感
提到《钢铁是怎样炼成的》这本书,想必大家对它并不陌生吧!书里讲了一位坚强,勇敢的主人公保尔·柯察金.
读了《钢铁是怎样炼成的》这本书后,我领悟到:一个人的毅力对他的一生是有很大影响的.就说这本书中的主人公保尔·柯察金吧,他的一生非常坎坷,然而他凭什么使自己继续活下去呢 是毅力.毅力给了他无穷的力量,老天也使他有了三次生命.自从认识水兵朱赫来以来,他的心被共产党吸引住了.经过几番波折,他终于如愿以偿,成为了一名共产党员.他出生入死,英勇杀敌.在战争中他也受了不少伤.最严重的一次就是被弹片击中头部,死里逃生.痊愈后,保尔没有忘记党,拿起新的武器,重返战斗队伍,开始了新的生活!
他十几岁就立足杀场,英勇杀敌,热爱祖国,在战场上,他被砍了好几刀都大难不死,为什么 仍然是毅力.年轻的他后来疾病缠身,但他仍不停地忘我工作,有休假疗伤的机会他也不愿意放弃工作,毅力真是一种锲而不舍的精神啊!
这是一个感人的故事,我的心好象在水里扔下了一块大石头,久久不能平静.我佩服保尔·柯察金那种勇敢,百折不挠的精神.讨厌故事里维可外多那种小贵族.保尔·柯察金的影子时时在我的脑子里浮现,鼓励我要像像他一样做一个坚强,勇敢的人.
生活在和平年代的我们,生活中一点小小的困难没什么大不了,只要勇敢地去面对,等事情一过,你会发觉,原来自己是有毅力的.保尔·柯察金的精神,永远值得我学习.
- 各函数对3个文件时间的影响,包括:所操作的文件或目录本身、所操作的文件或目录的父目录
评论暂时关闭