1、文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件或socket
2、每一个进程都有自己的文件描述符集合
3、当创建进程时,通常默认会有3个文件描述符(0,1,2),0代表标准输入,1代表标准输出,2代表标准错误,它们统称为标准IO,所以如果进程通过open打开一个文件的时候,文件描述符会从3开始,fd的值其实就是进程中打开文件列表的下标索引
4、由于文件描述符在一个进程中是特有的,因此不能在多个进程中间实现共享,而唯一的例外是在父/子进程之间,当一个进程调用fork时,调用fork时打开的所有文件在子进程和父进程中仍然是打开的,而且子进程写入文件描述符会影响到父进程的同一文件描述符,反之亦然
5、Unix操作系统通常给每个进程能打开的文件数量强加一个限制,ulimit -n查看系统默认的文件描述符
6、基于文件描述符的输入输出函数:
open:打开一个文件,并指定访问该文件的方式,调用成功后返回一个文件描述符。 creat:打开一个文件,如果该文件不存在,则创建它,调用成功后返回一个文件描述符。 close:关闭文件,进程对文件所加的锁全都被释放。 read:从文件描述符对应的文件中读取数据,调用成功后返回读出的字节数。 write:向文件描述符对应的文件中写入数据,调用成功后返回写入的字节数。 ftruncate:把文件描述符对应的文件缩短到指定的长度,调用成功后返回0。 lseek:在文件描述符对应的文件里把文件指针设定到指定的位置,调用成功后返回新指针的位置。 fsync:将所有已写入文件中的数据真正写到磁盘或其他下层设备上,调用成功后返回0。 fstat:返回文件描述符对应的文件的相关信息,把结果保存在struct stat中,调用成功后返回0。 fchown:改变与打开文件相关联的所有者和所有组,调用成功后返回0。 fchmod:把文件描述符对应的文件的权限位改为指定的八进制模式,调用成功后返回0。 flock:用于向文件描述符对应的文件施加建议性锁,调用成功后返回0。 fcntl:既能施加建议性锁也能施加强制性锁,能建立记录锁、读取锁和写入锁,调用成功后返回0。 dup:复制文件描述符,返回没使用的文件描述符中最小的编号。 dup2:由用户指定返回的文件描述符的值,用来重新打开或重定向一个文件描述符。 select:同时从多个文件描述符读取数据或向多个文件描述符写入数据
7、简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。
8、扩展:
http://blog.csdn.net/commandow/article/details/5985899
http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html
相关推荐
linux下文件描述符最大限制默认最大为1024,通过 [root@localhost ~]# ulimit -n 1024 这个命令可以查看。此值可以修改。 进程的文件描述符,可以通过 [root@localhost ~]# ls -al /proc/13623/fd |wc -l 59 输出...
【嵌入式开发教程之Linux进程与它的文件描述符】是一个深入探讨Linux系统中进程管理和文件操作的主题。在这个教程中,我们将重点解析五个关键部分: 一、概述:在Linux操作系统中,每个进程都有一个独立的文件描述...
在Linux系统中,`fcntl()`函数就是一个典型的例子,它允许程序员通过不同的`cmd`参数来控制文件描述符的行为,如`F_GETFL`获取文件标志、`F_SETFL`设置文件标志等。 #### 特性示例:网络套接字操作 在上述部分提供...
通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n 1024 当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...
在计算机科学,特别是操作系统领域,文件描述符(File Descriptor)是一个关键的概念,特别是在Linux和类Unix系统中。文件描述符是进程与操作系统交互的一种方式,主要用于读写文件、网络通信等I/O操作。以下是关于...
Socket不仅可以传输数据,还可以通过`sendmsg()`和`recvmsg()`系统调用传递文件描述符,这得益于Linux的`sendfile()`和`splice()`系统调用的扩展。 具体实现步骤如下: 1. **创建Ashmem**:在进程A中,通过` ...
此外,它还记录了进程的时间信息(如utime, stime, cutime, cstime),信号处理信息(如pending和blocked信号),文件系统状态(由`fs_struct`表示),打开的文件描述符,以及等待队列等。 进程描述符的`thread_...
1. **open()**: `open`函数是用于打开一个文件的,它返回一个文件描述符,后续的文件操作都将通过这个描述符进行。该函数接受两个参数:文件名和操作模式(如只读、只写、读写等)。例如,`open("filename", O_...
基于linux ,使用select检测串口句柄事件,同时进行超时判断的串口485读写操作。为高效可控的linux串口操作例程。tcsetattr,tcflush,select,ioctl,gettimeofday。485收发方向切换。
文件描述符是Linux系统中对打开文件的一种抽象表示,每个进程都有一个文件描述符表,用于管理其打开的文件或套接字等资源。本示例代码将探讨如何在两个进程之间传递文件描述符,以实现数据共享。 首先,我们来看`...
在Linux操作系统中,Socket文件描述符是用于标识进程间通信(IPC)中网络连接状态的一种方式。通过Socket文件描述符,我们可以了解一个进程中的网络连接情况,包括连接的状态、地址等信息。本文将详细介绍如何利用/...
本文总结了 Linux 文件 IO 的相关知识点,涵盖了文件 IO 的基本概念、文件描述符、open 函数、read 函数、write 函数、lseek 函数、close 函数等。 一、文件 IO 概念 文件 IO 是计算机操作系统中最基本的输入/输出...
至于“hid descriptor tool”这个文件名,很可能是该工具的执行程序或者源代码文件,用户可以通过运行或编译这个文件来使用HID描述符自动生成的功能。 USB报告描述符是HID设备的关键部分,它定义了设备如何与主机...
在Linux内核中,文件描述符是操作系统用来标识和跟踪进程打开文件的一种机制。它是一个非负整数,用于区分进程中的不同打开文件。当进程通过`open`系统调用打开一个文件时,内核会创建一个`file`结构实例,这个实例...
在Linux系统中,文件描述符是操作系统用于标识和操作打开文件的一种抽象机制。当一个程序打开一个文件时,系统会分配一个唯一的文件描述符给它,通常从0开始(标准输入),1(标准输出),2(标准错误)。在这个场景...
在Linux下,进程间传递描述符是一种高级的IPC形式,它允许一个进程向另一个进程传递已经打开的文件描述符。这种方式允许进程间共享文件、管道、套接字等资源,而无需复制数据本身。 首先,理解文件描述符是操作系统...
在Linux操作系统中,文件描述符(File Descriptor, fd)和文件指针(FILE *)是两种不同的方式,用于访问和操作文件。它们各自有其特点和应用场景,有时需要在两者之间进行转换。以下是对这两个概念的详细解释以及...
4. **文件描述符与流**:理解并使用文件描述符(如`fdopen()`, `close()`)和基于流的文件操作(如`fopen()`, `fclose()`, `fprintf()`, `fscanf()`)。 5. **错误处理**:学习如何正确处理文件操作可能出现的错误,...