[unix]文件描述符是个啥?
来源:互联网 发布:深入理解大数据微盘 编辑:程序博客网 时间:2024/04/29 14:12
系统默认定义了标准输入
#define STDIN_FILENO 0
标准输出
#define STDIN_FILENO 1
错误输出
#define STDERR_FILENO 2
在unix系统 打开文件进行操作都需要文件描述符,文件描符简单的说就是身份证ID。
系统维护一个文件表 该文件表里面存放的是 文件描述符 和地址 ,地址指向具体文件操作定义
通过使用文件描述符 可以索引到文件操作
系统默认提供了 0~2的文件描述符
之后的 当我们进行 open,create等操作的时候 自动添加进表
所以int creat(const char * ,mode_t)返回的文件int 就是你所进行操作的文件的唯一身份标示,
然后你只要拿着这个ID 然后告诉系统给我找xx
write(int fd,char *buf,int lenght) 通过fd得到准确文件 然后写入
在OS X系统下测试 文件描述符表 自增,当释放close之后,fd变成-1
如果再继续新建 则填补之前的空缺。
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#defineFILE_MODE(S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)int main(void){ int fd; fd=creat("file.hole", FILE_MODE); printf("After Create:%d\n",fd); int fd2=creat("file.hole", S_IREAD); printf("After Create:%d\n",fd2); int fd3=dup(fd); printf("After Dup:%d\n",fd3); close(fd); int fd4=dup(fd2); printf("Delete a fd and Create New:%d\n",fd4);}
结果如下
After Create:3After Create:4After Dup:5Delete a fd and Create New:3
0 0
- [unix]文件描述符是个啥?
- linux/unix文件描述符
- UNIX IO---文件描述符
- linux/unix 文件描述符的应用
- 《UNIX IO---再谈文件描述符》
- UNIX IO---再谈文件描述符
- UNIX IO---再谈文件描述符
- UNIX IO---再谈文件描述符
- UNIX IO---再谈文件描述符
- UNIX IO---再谈文件描述符
- UNIX IO---再谈文件描述符
- socket - - - -标准UNIX 文件描述符
- TCP/IP-------unix文件描述符-8
- 【unix高级编程】1.文件描述符
- 【Linux&Unix--文件描述符与权限】
- UNIX IO---再谈文件描述符
- unix文件描述符——socket
- UNIX再学习 -- 文件描述符
- ibatis详细配置
- Cocos2dx播放mp4文件(IOS和Android)
- Ubuntu个人目录中文改成英文
- Unitils集成DBUnit、Spring-单元测试
- CentOS7安装LAMP
- [unix]文件描述符是个啥?
- hdoj 2544 最短路
- MyEclipse 中各种 libraries 的含义
- Log4j2之Appenders
- 第四讲 感知器(Perceptron)
- 集合的遍历
- Web App开发技巧总结
- web设计小白 代码过于冗长问题解决
- Tomcat容器 web.xml详解