写这篇文正主要是为了介绍下fcntl,并将我自己在学习过程中的一些理解写下来,不一定那么官方,也有错误,希望指正,共同进步- fcntl: 一个修改一打开文件的性质的函数.基本的格式是 int fcntl(int filedes, int cmd, ...) 包含在头文件<fcntl.h>中. 参数三是看cmd这个参数的设置.函数返回一个文件描述符.fcntl有五种功能.下面介绍其中的三种功能 1.复制一个现有的描述符(cmd = F_DUPFD) 2.获得/设置文件描述符标记(cmd = F…
第三章说明了关于文件I/O的基本函数,主要是针对普通regular类型文件.本章描述文件的属性,除了regular文件还有其他类型的文件. 函数stat.fstat.fstatat和lstat stat系列函数用于返回文件的属性信息,比如文件类型.大小.所有者.访问修改时间等.其头文件及函数原型如下: #include <sys/stat.h> int stat (const char *restrict file, struct stat *restrict buf); int fstat…
一.引言 说明几个I/O函数:open.read.write.lseek和close,这些函数都是不带缓冲(不带缓冲,只调用内核的一个系统调用),这些函数不输入ISO C,是POSIX的一部分: 多进程共享资源(包括文件)时,会有很多额外的烦恼,需要对共享资源.原子操作等概念深入理解,需要理解涉及的内核有关数据结构,这些数据结构对理解文件.共享有重要作用: 最后介绍dup.fcntl.sync.fsync和ioctl函数. 二.文件描述符 open或creat文件时,内核--文件描述符fd-->…
一.引言 本章描述文件系统的其他特征和文件的性质.有些背景知识需要注意,例如用户ID与文件权限.文件系统等. 二.函数stat.fstat.fstatat和lstat #include <sys/stat.h>int stat( const char * restrict pathname, struct stat * restrict buf );int fstat( int fd, struct stat * buf );int lstat( const char * restrict p…
dup 和 dup2   dup和dup2,都是用来将一个文件描述符复制给另一个文件描述符上,这两个文件描述符都指向同一个文件状态标志上. 只是文件描述符的大小不一样,dup所执行下的复制,肯定是返回的系统中最小的可用文件描述符.而dup2.可以自定义文件描述符的.系统的0.1.2描 述符已经被占用.所以用dup所复制的描述符是不能是这三个的.我们可以将这三个复制给其他的文件描述符. 函数描述 int dup(int filedes) int dup2(int filedes, int file…
前面两章说明了UNIX系统体系和标准及其实现,本章具体讨论UNIX系统I/O实现,包括打开文件.读文件.写文件等. UNIX系统中的大多数文件I/O只需要用到5个函数:open.read.write.lseek.close.它们是不带缓冲的I/O. 只要涉及多个进程间共享资源,原子操作的概念就变得很重要,本章通过open( )函数来讨论此概念. 文件描述符 文件描述符是一个非负整数,它是内核对打开文件的一个抽象.每当打开或者创建一个文件时,内核会向进程返回一个文件描述符,随后可以利用该描述符来进…
http://jimslinbing.blog.163.com/blog/static/85054319201292712414518/ 1.到http://www.apuebook.com下载源码2.tar解包,cd apue.2e3.vi Make.defines.linux   修改变量WKDIR,指向你的apue源码的位置,我的是/home/huangz/code/apue.2e,所以  WKDIR=/home/huangz/code/apue.2e4.vi include/apue.h…
转自:http://blog.csdn.net/fool_duck/article/details/46917377 以下是基于 linux 0.11 内核的说明. 在init/main.c第138行, 在move_to_user_mode()之后,进程0通过fork()产生子进程,实际就是进程1(init进程). 在main.c第23行: static inline _syscall0(int,fork) 通过 _syscall0 调用 fork ._syscall0 即不带参数的系统调用:t…
打开或创建一个文件 #include <fcntl.h> int open(const char *pathname, int oflag, .../*mode_t mode*/);     返回值:若成功则返回文件描写叙述符,若出错则返回-1 oflag选项: O_RDONLY O_WRONLY O_RDWR 以上三个常量中必须指定一个,且仅仅能指定一个. 下面常量都是可选的: O_APPED     每次写时追加到文件尾 O_CREAT     若文件不存在,则创建 O_EXCL     …
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制 (七) 一起学 Unix 环境高级编程 (APUE)…