linux文件赋权命令详解 (如何配置linux系统文件描述符限制)

在文章Linux应用编程(1)系统调用&库函数 确定真懂?和Linux应用编程(2)2分钟搞懂Linux 7种文件类型 中对系统调用 库函数 以及linux文件的类型做了介绍,不过在开始敲代码之前,还有一个概念值得开发者好好理解,就是“文件描述符”。

上一篇文章讲了Linux 7种文件类型,那么内核如何区分并且使用这些文件呢?答案是通过“文件描述符”。

什么是文件描述符?

文件描述符其实质是一个数字,而且是一个非负整数。当打开open或者创建create一个新文件时,内核都会给打开的文件返回一个文件描述符fd。这个文件描述符fd和实际的设备是相对应的,以后就可以通过读写等函数(read write)来操作这个文件描述符进而达到操作设备的目的。

可以通过man 2 xxx命令来查看这些基本函数的原型,如下所示:

int open(constchar*pathname,intflags);

int open(constchar*pathname,intflags,mode_tmode);

int create(const char *parhname,mode_t mode);

ssize_t read(int fd, void *buf, size_t count);

ssize_t write(int fd, const void *buf, size_t count);

off_t lseek(int fd, off_t offset, int whence);

open create函数的返回值就是打开或者创建设备文件的文件描述符。read write lseek等函数的第一个参数fd(file description)就是我们要操作的文件描述符,也就是open create的返回值。因此理解了文件描述符对后面的编程至关重要。

linux查看已使用文件描述符个数,linux应用开发学习流程

文件描述符需要注意的地方

文件描述符0、1和2. 这3个文件描述符比较特殊,在系统已经固定了。文件描述符0作为标准输入实际上是对应人机交互键盘设备 文件描述符1作为标准输出实际上是对应人机交互设备显示屏。 文件描述符2作为标准出错实际上是计算机将运算的错误信息显示到显示器上。如果我们将标准输出关闭,那么使用printf将无法把信息输出。这3个文件描述符可以用分别用宏来直观表示STDIN_FILENO、STDOUT_FILENO和STDERR_FILE以提高可读性。这些常量是在头文件<unistd.h>。

后续继续更新...

更多精彩内容可以关注此头条号:嵌入式软硬件开发 喜欢的话大家可以“评论”,“转发”、“点赞”或者“收藏”,感谢大家。C语言交流群:932029691 相互交流,共同成长。