linux学习笔记之零散笔记。
部分知识,不足以成为完整博文。但又不能随意抛弃。
1,文件名建议字符集:字母+数字+ ./-/_ 尽量不要使用其他符号。因为特殊符号在很多功能中已经被占用。
2,系统调用通常提供最小接口(最简易),库函数提供相对复杂的功能。
3,用户CPU时间,系统CPU时间,时钟时间。
1,用户CPU时间:在用户状态下CPU的时间。
2,系统CPU时间:内核状态下的执行时间。(系统调用以及读写操作等)
3,时钟时间:从进程开始到结束的时间。包括阻塞,等待...。
4,main(int argc, char *argv[ ], char **env)
1,大部分编译器支持void返回值。从C++角度是不合法的。UNIX类系统中,要求上述main函数。
2,参数在main执行之前被赋值。
3,argc,用来统计运行程序送给main函数的命令行参数个数。
4,argv[],字符串数组。每个元素指向一个参数。
1)0:程序运行的绝对路径名。
2)1:DOS命令行中 程序名后 第一个字符串。
3)2:第二个字符串,以此类推。
4)argv[argc] == NULL
5:env[],字符串数组。每个元素 包含 一个 ENVVAR = value 形式的字符串。
1)其中ENVVAR为环境变量,value 为ENVVAR的对应值。
5,page:72,题:3.4 文件描述符。阅读完后,尝试解决。
6,linux实现/dev/fd 是一个例外:它把文件描述符映射成指向底层物理文件的符号链接。
7,restrict关键字:C语言限定符。用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容。
1,总的来说,就是锁指针。只读不可写。
8,在linux中,消息队列,信号量,共享储存对象都不表示成文件的形式。
9,只有内核才可以写文件。
10,目录文件包含 其他文件的名字 和 文件的信息指针(内容索引)。
1,删除一个文件:需要对其 包含目录 拥有 写和执行 权限。对文件本身只需要执行权限(不需读写)。
11,索引目录需要执行权限。
12,执行权限位:s,S。和X执行权限同位。
1,作用:说明设置位置位。当出现在用户权限时,表示设置用户ID功能开启(组中,表示设置组ID功能开启)。
2,当为小写s时,说明此文件可执行。大写S表示,此文件不可执行。
3,sticky bit: 该位可以理解为防删除位。如果希望用户能够添加文件,但同时不能删除文件。则可以使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件。
1)当设置后,x执行权限位上,用T来覆盖。与S同理,小写可执行,大写不可执行。
13,粘着位(S_ISVTX):早期用来确定是否将内容缓存在交换区中。Single UNIX Specification对其进行了扩展。
1,作用,在删除文件时,除了拥有写权限还需要满足以下要求之一:
1)拥有此文件/目录。
2)超级用户root。
14,du指令:用于显示文件的块的数量。具体可见:man du。
15,修改时间(st_mtime) 和 状态更改时间(st_ctim) 存在区别。
1,i节点中的状态信息 和 文件实际内容 分开存放。
16,缓冲分为:行缓冲 和 全缓冲。
1,当流涉及到终端时(例:标准输入/出),通常为行缓冲。
2,行缓冲限制:
1)行缓冲长度是固定的。可能出现:行缓冲填满,但没有换行符的情况。此时,依然会进行IO操作。
2)任何时候,从标准IO库中得到输入数据,都会清除所有行缓冲输出流。(此为书中记录。对输入/出的概念需要进一步明确。)
3,ISO C的缓冲特征:
1)当且仅当 标准输入/出 并不指向交互式设备时,才是全缓冲。
2)标准错误一定不是全缓冲。(一般为无缓冲。)
4:fflush函数:int fflush( FILE *fp )
1)使该流所有未写数据 都被传输到内核。当fp == null 时,则清空所有输出流。
17,口令文件和阴影口令。
1:口令文件:包含用户帐号信息和相关系统配置等信息。
2:阴影口令,再普通口令基础上改良的用户密码保存机制。
18,常用的数据文件。
说明 | 数据文件 | 头文件 | 结构 | 附加的键搜索函数 |
口令 |
/etc/passwd | <pwd.h> | psaawd | getpwnam, getpwuid |
组 | /etc/group | <grp.h> | group | getgrnam, getgrgid |
阴影 | /etc/shadow | <shadow.h> | spwd | getspnam |
主机 | /etc/hosts | <netdb.h> | hostent | getnameinfo, getaddrinfo |
网络 | /etc/networks | <netdb.h> | netent | getnetbyname, getnetbyaddr |
协议 | /etc/protocols | <netdb.h> | protoent | Getprotobyname, getprotobynumber |
服务 | /etc/services | <netdb.h> | servent | getservbyname, getservbyport |
19,如果宿主机链接到TCP/IP网络中,则此主机名通常是该主机的完整域名。
20,从10章以后的习题都未完成
21,同步,异步,阻塞,非阻塞。http://blog.sina.com.cn/s/blog_756d94a601011eww.html
22,fwide函数:设置流的定向。
1,函数原型:int fwide( FILE *fp, int mode );
23:strlen函数:计算不包含终止null字节的字符串长度。
1,sizeof函数计算包括终止null字节的缓冲区长度。
24:PAM:pluggable Authentication modules。可插入的身份验证模块。
25:在网络登陆情况下,logic仅仅是一种可用的服务,与其他网络服务(FTP,SMTP)的性质相同。
26:网络登录。
1,伪终端:软件驱动程序。即能处理终端登陆,又能处理网络登录。
27:跳转函数。
1,函数原型:
1)int setjmp( jmp_buf env ); 设置跳转点。
2)void longjmp( jmp_buf env, int val ); 进行掉转。参数val 将作为回跳的返回值。
28:每个信号都名字,以SIG开头。
1,不存在编号为0的信号。0有特殊的用途。
2,SIGKILL 和 SIGSTOP 不能忽略。 因为它们提供 终止/停止 的可靠方法。
29:系统调用分成两类:低速系统调用 和 其他系统调用。
1,低速系统调用一般指哪些可能会使进程永远阻塞的调用。
2,被中断的系统调用的相关问题必须显式的处理出错返回。
3,部分调用拥有自动重启功能。
posted on 2015-02-02 15:55 zheng39562 阅读(153) 评论(0) 编辑 收藏 举报