2012年12月21日
来源:互联网 发布:网络英语教程 编辑:程序博客网 时间:2024/06/05 21:58
“Unix 中所有的东西就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是(注意后面的话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件 或者什么其他的东西。Unix中所有的东西是文件!因此,你想和 Internet 上别 的程序通讯的时候,你将要通过文件描述符。最好相信刚才的话。
现在你脑海中或许冒出这样的念头:“那么我从哪里得到网络通讯的文件描述符呢,聪明 人?”无论如何,我要回答这个问题:你利用系统调用socket()。他返回套接口描 述符 (socket descriptor),然后你再通过他来调用 send() 和recv()。
“但是...”,你可能现在叫起来,“如果他是个文件描述符,那么为什么不用一般的调用 read() 和 write()来通过套接口通讯?”简单的答案是:“你可以使用 一般的函数!”。详细的答案是:“你可以,但是使用 send() 和 recv()让你更好的控制数据传输。”
-
基于文件描述符的 -
在UNIX、Linux的系统调用中,大量的系统调用都是依赖于文件描述符。
-
在非UNIX/Linux -
由于文件描述符在形式上不过是个整数,当代码量增大时,会使编程者难以分清哪些整数意味着数据,那些意味着文件描述符。
而很多系统调用都是通过对这个文件指针的操作来进行的。
当某个程序打开文件时,操作系统返回相应的文件描述符,程序为了处理该文件必须引用此描述符。所谓的文件描述符是一个低级的正整数。最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。因此,函数scanf() 使用 stdin,而函数 printf() 使用 stdout。你可以用不同的文件描述符改写默认的设置并重定向进程的I/O 到不同的文件。
1、首先说什么是文件描述符,它有什么作用?
文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。
是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。
和
UNIX
系统调用都依赖于它。
- 2012年12月21日 工作总结
- 2012年12月21日
- 2012年09月12日-13日
- 2012年2月21日
- 2012年3月21日学习
- 2012年08月21日
- 2012年8月21日
- 2012年03月21日
- 2007年12月21日
- 2009年12月21日
- 2010年12月21日
- 2014年12月21日
- 2017年12月21日
- 2012年1月12日经验总结
- 2012年4月12日
- 2012年3月12日学习
- 2012年04月12日
- 2012年12月4日
- 抽象工厂方法C++实现
- POSIX定时器:timer_settime(…
- Linux下Socket编程(转载)
- Linux下Socket编程
- Linux Socket编程(转载)
- 2012年12月21日
- Linux pipe(管道)
- Linux 上实现双向进程间通信管道
- poj1077 /hdoj 1043 Eight
- Linux pipe
- LINUX c++线程池框架
- Python的垃圾回收机制
- 输出任意一个tuple的元素
- 『精品素材』35套免费的 Web & Mobile 界面设计套件《下集》