《APUE》第6章笔记】的更多相关文章

unix domain socket 关闭socket并不会删除文件,重复bind会失败.所以在bind之前要unlink该文件. open服务器的实现只是简单地看了一下,大致上就是通过unix domain socket传递了打开的fd和相应的权限,而不是文件内容.数据通过sendmsg和recvmsg这两api来实现. 这样的好处,是打开的逻辑和客户端实现解耦,同时也屏蔽了一些细节(比如设备.文件等).相比库函数,这样的方式更便于更新. 然后是getopt这个函数的用法.这是写工具经常会用到…
intel 都是小端,小端即最低有效字节在最低地址上. tcp/ip协议栈使用大端字节序. connect失败可能是一瞬时的,用指数补偿算法处理,exponential backoff.但是在bsd套接字实现中,不能这么处理,connect失败,需要关闭套接字,重新打开,这样才是可移植的. 使用dup2来重定向fd. tcp面向连接,udp无连接. recvfrom可能会无限期阻塞. SOCK-DGRAM保证一次可以读取一条消息.而SOCK_STREAM可能需要读多次才行.…
文件共享 UNIX系统支持在不同进程中共享打开的文件,首先先用一幅apue的图来介绍一下内核用于I/O文件的数据结构: 如图所见,一个进程都会有一个记录项,记录项中包含有一张打开文件描述符表,每个描述符占用一项. 描述符包括:(a)文件描述符标志(fd标志),(b)指向一个文件表项的指针(文件指针). 而文件表包括:(a)文件状态标志,(b)当前文件偏移量,(c)v节点指针 v节点包括:文件类型和对此文件进行各种操作的函数的指针,大部分v节点还包括年i节点(索引节点,第四章详细介绍) 如果两个进…
read函数 调用read函数从打开的文件中读数据. #include <unistd.h> ssize_t read(int filedes, void *buf, size_t nbytes); 返回值:若成功则返回读到的字节数,若文件已到结尾则返回0,出错返回-1 有多种情况可使实际读到的字节数少于要求读的字节数 1.读普通文件时,在读到要求字节数之前已到达了文件尾端.例如,若在到达文件尾端之前还有30个字节,而要求读100个字节,则read返回30.下一次再调用read时,它将会返回0…
以下内容是我看<APUE>第二版第三章的笔记,有错还希望指出来,谢谢. unbuffered I/O,跟buffered I/O相对,buffered I/O就是 ISO C标准下的标准输入输出函数,而unbuffered I/O就是POSIX下的函数. 文件描述符,个人理解就相当于Linux下的UID,GID那样具有系统标识性的数字.系统对哪个哪个文件操作主要认的就是文件描述符.按照惯例,在UNIX的shell下,0代表标准输入,1代表标准输出,2就代表标准出错输出.在遵从POSIX的应用程…
原文网址:http://www.cnblogs.com/fusae-blog/p/4256794.html APUE第三章的最后面给出的函数,现在还用不着,所以,先留个名字,待到时候用着了再补上好了. dup和dup2函数:用来复制文件描述符的 sync函数,fsync函数和fdatasync函数:大致的功能是将缓冲区的数据刷进队列中,等待写入到硬盘中. fcnti函数:可以改变已打开文件的性质. ioctl函数:控制设备. 习题: 1.当读/写磁盘文件时,本章中描述的函数是否有缓冲机制?请说明…
1.引言 本章介绍文件系统的特征和文件的性质.从stat函数开始,逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中,还将会说明修改这些属性的各个函数,并更详细地查看UNIX文件系统的结构和符号连接,最后还介绍对目录进行操作的各个函数. 大概就是介绍以下几点: 1.stat函数和stat结构的每一个成员(这些都是文件的属性). 2.修改每个属性的对应函数.(比如修改文件权限的chmod函数). 3.UNIX文件系统的结构和符号链接 4.对目录进行操作的各个函数. 先介绍3个stat…
APUE第三章的最后面给出的函数,现在还用不着,所以,先留个名字,待到时候用着了再补上好了. dup和dup2函数:用来复制文件描述符的 sync函数,fsync函数和fdatasync函数:大致的功能是将缓冲区的数据刷进队列中,等待写入到硬盘中. fcnti函数:可以改变已打开文件的性质. ioctl函数:控制设备. 习题: 1.当读/写磁盘文件时,本章中描述的函数是否有缓冲机制?请说明原因. 答:是没有的.上述提到的函数是open,read,write等基于POSIX的函数,是直接调用内核中…
apue第七章学习总结 1.main函数 程序是如何执行有关的c程序的? C程序总是从main函数开始执行.main函数的原型是 int main(int argc,char *argv[]); 其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组. 当内核执行C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址--这是由连接编辑器设置的,而连接编辑器则由C编译器(通常是cc)调用.启动例程从内核取得命令…
apue第六章学习总结 1.关于阴影文件与口令 在口令文件当中,常见的字段有(以root为例): root(用户名):x(加密口令):0(uid):0(gid):root(注释字段):/root(用户所在根目录):/bin/bash(用户的shell所在目录) 注意:这里的加密口令只是一个占位符号,真正的加密口令存于阴影文件当中,阴影口令文件不应是一般用户可以读取的.仅有少数几个程序需要存取加密口令,例如login(1)和passwd(1),这些程序常常是设置用户ID为root的程序.用了阴影口…