zoukankan      html  css  js  c++  java
  • Linux文件描述符介绍

    一、概述

      Linux系统中一切皆文件,无论是什么,只要是存在Linux系统中的,他都是一个文件。而进程的作用就是为了处理数据,文件是

    保存数据最常见的方法。所以,一般进程都需要打开一些文件,来读取和写入一些数据。但是文件的名称非常复杂,虽然方便我们人

    类查看,但是计算机很难识别这个名称,为了让计算机可以快速的识别文件,我们就引入一个非负整数来代替某个文件。这个非负整

    数就是文件描述符。所以,总结说,文件描述符就是内核为了高效的管理被打开的文件,所创建的一个非负整数和文件名的索引关系。

    这个非负整数范围:0-N,其中0,1,2是特殊文件的文件描述符。0是标准输入,1标准输出,2是错误输出,一般文件的描述符

    都是从3开始的。

    二、文件描述符限制

      一般来说,我们可以创建非常多的文件描述符,直到系统内存被沾满为止,但是生产中是不允许这样的,因为系统内存还有其他的

    作用。所以内核会做出想用的控制,避免占用内存空间,一般情况下,不超过系统内存的10%(从系统级别来看)。

      限制的种类:

      1、系统级别的限制:指系统上所有的进程打开的文件描述符的限制

      2、用户级别的限制:指某一个用户下进程打开的文件描述符的限制

    三、文件描述符的设置

    系统级别:sysctl -a | grep fs.file-max,这个值是由内核自己维护的,最好不要修改他

    临时设置:

      ulimit -SHn  value

    永久设置:

      即编辑/etc/security/limits.conf文件

      格式:

       domain    type    item   value

    domain:可以设置用户或者组

    type:hard和soft两种,-代表两者都设置,soft不能超过hard的值

    item:nofile代表最大打开文件数,nproc代表最大进程数

      

        

  • 相关阅读:
    数据库DQL(Data Query Language)语言学习之一:基础查询
    Mysql查看连接数(连接总数、活跃数、最大并发数)
    完成端口之二:服务器代码
    完成端口之二:线程池部分
    完成端口之一
    日志系统(Log4z源码)
    C++多线程同步之Semaphore(信号量)
    select、poll和epoll的优缺点
    python之切片
    python之Dict和set类型
  • 原文地址:https://www.cnblogs.com/myeric/p/8809355.html
Copyright © 2011-2022 走看看