曾 经是世界上最为广泛、最为流行的局域网操作系统。
NetWare 是基于服务器的网络系统, 网络中必须要有一台专用服务器。
NetWare 操作系统分为四个基本部分:NetWare 加载 程序、内核、NetWare 可安装模块环境和应用程序。
NetWare 主要向网络环境客户提供 文件服务,目前在我国的银行、证券等行业中使用。
NetWare 网络的体系结构如图 1-7 所示。
NCP:NetWare 核心协议(NetWare Core Protocol) IPX:网间分组交换协议(Internet Packet eXchange)——相当于 TCP/IP 协议中的 IP SPX:顺序分组交换协议(Sequenced Packet eXchange)——相当于 TCP/IP 协议中的 TCP 图 1-7 NetWare 网络体系结构 1.2 文 件 系 统 在网络通信中,许多通信方式(如 Socket 通信、管道通信、邮路通信等)的基本原理都与 UNIX/Linux 的文件操作相同,所以,了解 UNIX/Linux 下的文件操作是学习网络通信的基础。
本节介绍 Linux 下的文件操作,主要内容包括: 文件的创建和读写 文件属性 目录文件的操作 管道文件1.2.1 Linux 文件操作 1.文件的打开和关闭 当需要打开一个文件进行读写操作的时候,可以使用系统调用函数 open。
文件 使用完以后调用另外一个函数 close 进行关闭操作。
int openconst char pathname int flags int openconst char pathname int flags mode_t mode int closeint fd open 函数有以上两个形式。
其中 pathname 是要打开的文件名(包含路径名称,默认在当前路径下)。
flags 用于指定文件打开方式,可以取下面的一个值或者是几个值的组合。
O_RDONLY:以只读的方式打开文件。
O_WRONLY:以只写的方式打开文件。
O_RDWR:以读写的方式打开文件。
O_APPEND:以追加的方式打开文件。
O_CREAT:创建一个文件。
O_EXEC:如果使用了 O_CREAT 而且文件已经存在,就会发生一个错误。
O_NOBLOCK:以非阻塞的方式打开一个文件。
O_TRUNC:如果文件已经存在,则删除文件的内容。
在上面的标志中,前面三个标志只能使用任意的一个。
如果使用了 O_CREATE 标志,那么就要使用 open 的第二种形式,即还要指定 mode,用来表示文件的访问权限。
mode 可以是以下情况的组合。
----------------------------------------------------------------- S_IRUSR 用户可以读 S_IWUSR 用户可以写 S_IXUSR 用户可以执行 S_IRWXU 用户可以读、写、执行 ----------------------------------------------------------------- 网络编程技术及应用8 S_IRGRP 组可以读 S_IWGRP 组可以写 S_IXGRP 组可以执行 S_IRWXG 组可以读写执行 ----------------------------------------------------------------- S_IROTH 其他人可以读 S_IWOTH 其他人可以写 S_IXOTH 其他人可以执行 S_IRWXO 其他人可以读写执行 ----------------------------------------------------------------- S_ISUID 设置用户执行ID S_ISGID 设置组的执行ID ----------------------------------------------------------------- 也可以用数字来代表各个位的标志。
Linux 共用 5 个数字来表示文件的各种权限: 第一位表示设置用户 ID,第二位表示设置组 ID,第三位表示用户自己的权限位,第四 位表示组的权限,最后一位表示其他人的权限。
每个数字可以取 1(执行权限)、2(写 权限)、4(读权限)、0(无任何权限),或者是这几个值的和。
例如,如果要创建一个用户可以读写执行、组没有权限、其他人可以读执行的文件, 则设置用户 ID 位可以使用的模式是:1(设置用户 ID)、0(组没有设置)、7(124)、 0(没有权限,使用默认)、5(14),即 10705,相应的函数形式为: opentemp O_CREAT 10705 如果打开文件成功,open 会返回一个文件描述符,以后对该文件的所有操作都是根 据这个文件描述符来进行。
当文件操作完成以后,要关闭文件,相应的调用为 close(int fd),其中 fd 是要关闭 的文件描述符。
2.创建新文件 要创建一个新的文件,可以使用 int creatchar pathname int mode 其中,pathname 为文件名,mode 为模式。
如果创建成功,则返回一个文件描述符, 并且该文件已经打开,可以读写,否则返回–1 值。
3.文件的读写 文件打开以后,就可以对文件进行读写了。
可以调用函数 read 和 write 进行文件的 读写。
int readint fd char buffer int count int writeint fd char buffer int count fd 是要进行读写操作的文件描述符,buffer 是要写入文件内容或读出文件内容的内 存地址,count 是要读写的字节数。
对于普通的文件,read 从指定的文件 fd 中读取 count 字节到 buffer 缓冲区中,同时 返回 count。
如果 read 读到了文件的结尾或者被一个信号所中断,返回值会小于 count。
如果是由信号中断引起返回,而且没有返回数据, 且设 read 会返回–1, 置 errno 为 EINTR。
当程序读到了文件结尾的时候,read 会返回 0。
write 将 buffer 中的 count 字节写到文件 fd 中,成功时返回实际所写的字节数。
1.2.2 文件属性 文件具有各种各样的属性,除了文件权限以外,文件还有创建时间、大小等属性。
要判断文件是否可以进行某种操作 , (读、写等)就 可以使用 access 函数。
int accessconst char pathname int mode pathname 是文件名称;mode 是要判断的属性,可以取以下值或者是它们的组合。
R_OK 文件可以读。
W_OK 文件可以写。
X_OK 文件可以执行。
F_OK 文件存在。
当测试成功时,函数返回 0,否则如果有一个条件不符时,返回–1。
如果要获得文件的其他属性,可以使用 stat 或者 fstat 函数。
int statconst char file_name struct stat buf int fstatint filedes struct stat buf 其中,stat 结构的定义为: struct stat dev_t st_dev /设备/ ino_t st_ino /节点/ mode_t st_mode /模式/ nlink_t st_nlink /硬连接/ uid_t st_uid /用户ID/ gid_t st_gid /组ID/ dev_t st_rdev /设备类型/ off_t st_off /文件字节数/ unsigned long st_blksize /块大小/ unsigned long st_blocks /块数/ time_t st_atime /最后一次访问时间/ time_t st_mtime /最后一次修改时间/ time_t st_ctime /最后一次改变时间指属性/ stat 用来判断没有打开的文件,而 fstat 用来判断打开的文件。
使用最多的属性是st_mode。
通过 该属性可以判断给定的文件是一个普通文件还是一个目录、连接等。
可以使用下面几个宏来判断。
网络编程技术及应用10 S_ISLNKst_mode:是否是一个连接。
S_ISREG:是否是一个常规文件。
S_ISDIR:是否是一个目录。
S_ISCHR:是否是一个字符设备。
S_ISBLK:是否是一个块设备。
S_ISFIFO:是否是一个 FIFO 文件。
S_ISSOCK:是否是一个 Socket 文件。
1.2.3 目录文件操作 在编写程序时,有时要获取当前的工作路径。
库函数提供了 getcwd 来解决这个问题。
C char getcwdchar buffer size_t size 函数提供一个 size 大小的 buffer, 。
如果 buffer getcwd 会把当前的路径复制到 buffer 中 太小,函数会返回–1 和一个错误号。
Linux 提供了大量的目录操作函数,其中比较简单和常用的函数有: int mkdirconst char path mode_t mode DIR opendirconst char path struct dirent readdirDIR dir void rewinddirDIR dir off_t telldirDIR dir void seekdirDIR dir off_t off int closedirDIR dir mkdir 创建一个目录。
opendir 打开一个目录。
readdir 读一个打开的目录。
rewinddir 用来重读目录。
closedir 是关闭一个目
上一篇:
【精品】王琦玮
下一篇:
选对材质 夏天也可以穿黑色