Andy Niu Help
1.0.0.0
|
Unix环境高级编程
变量 | |
文件描述符FD | |
详细描述
变量说明
文件描述符FD |
1、文件描述符是针对进程的,也就是说一个进程维护一组文件描述符FD,就是int值,各不相同,一般从3开始。 因为按照惯例0,1,2分别是标准输入,标准输出,错误输出。 2、一个进程中的FD各不相同,每次打开一个文件(即使是同一个文件),产生的FD也不相同。 代码: #include <stdio.h> #include <fcntl.h> int main(int argc, char* argv[]) { int fd1 = open("./aaa.txt",O_RDONLY); int fd2 = open("./aaa.txt",O_RDONLY); printf("fd1[%d], fd2[%d]\n", fd1, fd2); getchar(); return 0; } 测试: [root@localhost FD]# g++ -o main main.cpp [root@localhost FD]# ./main fd1[3], fd2[4] 3、文件描述符是针对进程的,一个进程中FD不会重复,但是不同进程中的FD会出现重复。 4、每个进程包含一个FD列表,每个FD包含文件描述符标志和一个指向文件表的指针,文件表对应一个打开的文件。 目前FD标志只有一个close-on-exec标志,取值0表示fork子进程,子进程exec的时候不关闭文件描述符,取值1关闭。 系统默认是0 5、内核维护一个文件表的列表,对应于所有打开的文件。文件表包含文件状态标志,当前文件偏移量,指向文件v节点的指针。 文件状态标志主要有读,写,添加,同步,阻塞等。 6、复制FD,使用dup方法。 dup复制文件描述符,返回一个新的FD,新FD与老FD的FD标志和文件表指针相同,文件表指针指向同一个文件表,二者的FD标志可以再设置不同。 7、注意以下单词的区别: duplicate和replicate都是复制的意思,但是二者的侧重点不一样。 du是double的意思,成双,复制一个一模一样的东西。 re是redo的意思,重做,对于做过的事情重新做一遍。 dump的原意是倾倒垃圾,在计算机中指把一个存储器中的内容转移到另一个存储器中。比如dump文件就是进程的内存镜像 保存到文件中。在mysql中dump是转存,也就是备份数据。
Copyright (c) 2015~2016, Andy Niu @All rights reserved. By Andy Niu Edit.