fd_set是一种数据类型,在select函数中包含了3个参数,就是这个fd_set类型,fd_set也是理解select模型的关键,关于select的具体说明,可以参考之前的文章嵌入式Linux编程之...select可以同时对多个文件描述符的状态去监听,那么这个所谓的“多个”的实现就是通过fd_set来实现的, 简单的说: fd_set是select监听描述符的集合,每个描述符集存储在一个fd_set...上面的话,可能会有些让人迷糊,之所以迷糊的原因就是, 文件描述符可大可小,是随意的,可以使1、2、3等等,那这个具体的数,怎么只能有1位来实现呢,为了说明问题,我们先假定 fd_set 的长度只有1个字节...,也就是只有8bit,那么1个字节长的fd_set最大可以对应8个文件描述符(fd), 那么问题来了,如果文件描述符是100怎么办?...至于fd_set的最大为多少,取决于机器,一般 是够用的,因为linux在分配文件描述符的时候,不是随意分配 个几千几万的,这个是比较宝贵的资源,是从小到大,一点点递增的,谁也不会傻到同时打开几万个文件的
简介 由于 Linux 系统是开源的,存在众多不同的发行版,为了防止不同的 Linux 发行版的系统目录结构大相径庭,以至于用户从一个发行版迁移到别的发行版后不会使用,FHS(Filesystem Hierarchy...目前主流的 Linux 发行版基本都遵循 FHS 标准,因此它们的系统目录结构也大致相同。 了解 Linux 文件目录结构的标准和每个目录的详细功能,对于用户用好 Linux 系统至关重要。 2....早期 Linux 在设计的时候,若发生问题时,救援模式通常仅挂载根目录而已,因此有五个重要的目录被要求一定要与根目录放置在一起,那就是 /etc、/bin、/dev、/lib、/sbin 这五个重要目录...现在许多的 Linux 发行版由于已经将许多非必要的文件移出 /usr 之外了,所以 /usr 也是越来越精简。
查看一级目录[root@localhost ~]# tree -L 1 / ##查看Linux根下目录/├── bin -> usr/bin...usr ##应用程序所在目录└── var ##数据变化的目录,一般存放日志文件注:Linux...mnt iso9600 defaults 0 0测试,该操作是把光驱设备挂载到/mnt下,然后reboot重启,可以发现光驱设备已自动挂载开机默认显示内容配置/etc/issueCentOS Linux..." >/etc/motd [root@money ~]# cat /etc/motd小白开始转行做运维,学习Linux[root@money ~]# 登出连接断开连接断开连接主机...连接主机成功Last...[root@money ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)补充:查看内核命令uname -r[root@money
Linux 目录结构 装完Linux,首先需要弄清Linux 标准目录结构 / root —?启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。 home —?...只有root权限才能执行 proc — 虚拟,存在linux内核镜像;保存所有内核参数以及系统配置信息 1 — 进程编号 usr — 用户目录,存放用户级的文件 bin — 几乎所有用户所用命令,另外存在与.../boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。...建议单独分区,分区大小100M即可 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。...Linux Directory Structure 2.?Linux’s directory structure 3.?Linux目录结构
系统存储设备挂载操作 挂载: 系统中空目录 和 磁盘存储设备文件建立关系 == 等价给磁盘开个门 PS: Linux一切皆文件 磁盘初始化准备工作: 1) 磁盘分区操作 2) 磁盘格式化操作...Linux系统目录结构: tree --- 展现目录下所有文件 目录 树 bin -> usr/bin --- 里面存储的是命令文件信息 二进制文件 usr...yum install -y tree vim telnet nc nmap lrzsz bash-completion sl cowsay lrzsz --- 可以实现windows和linux
一、Linux系统结构 1.Linux内核是什么? 操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。...是在Linux内核与用户之间的解释器程序,现在Linux通常指/bin/bash解释器来负责向内核翻译以及传达用户/程序指令,shell相当于操作系统的“外壳” 接收用户的命令,经过转换,交给内核去执行...文件系统 Linux系统一切皆文件 普通文件、目录、进程(/proc)、输入输出设备(/dev)、网络字节流socket、链接文件、管道文件 Linux系统没有Windows盘符的概念,所有的文件都在根目录...都表示当前目录 ---- 二、Linux权限 Linux的权限有RWX三种 r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。...我们来拆解结构,这里面我只列了根目录下的一部分内容 用到 ls -l 命令查看当前文件夹下详细信息,具体的命令和参数,后面会深入讲解 我们需要关注的是文件或目录的权限情况 l rwx rwx
📷 bin (binaries)存放二进制可执行文件 sbin (super user binaries)存放二进制可执行文件,只有root才能访问 ...
Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。...只有root权限才能执行 proc --- 虚拟,存在linux内核镜像;保存所有内核参数以及系统配置信息 1 --- 进程编号 usr --- 用户目录,存放用户级的文件 bin.../boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。...建议单独分区,分区大小100M即可 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。...Linux Directory Structure 2. Linux's directory structure 3. Linux目录结构
Linux世界,一切皆为文件!...> sbin存放超级用户的命令 ==/boot== > 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。.../dev > dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,如CPU、disk ==/etc== > 一般存放配置文件,如mysql的配置文件my.conf ==.../home== > 用户的主目录,在 Linux 中,每个用户都有一个自己的目录 /lib > lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows.../sys > ==勿动==这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
(注:错误并不是意外状态) 9timeout: NULL指针代表无限等待,否则是指向timeval结构的指针,代表最长等待时间。...[Linux就是这样的系统!你会发现sizeof(fd_set)的结果是128(*8 =FD_SETSIZE=1024) 尽管很少你会遇到这种情况。]...[在Linux中,timeout指的是程序在非sleep状态中度过的时间,而不是实际上过去的时间,这就会引起和非Linux平台移植上的时间不等问题。...poll()接受一个指向结构'struct pollfd'列表的指针,其中包括了你想测试的文件描述符和事件。事件由一个在结构中事件域的比特掩码确定。当前的结构在调用后将被填写并在事件发生后返回。...下面是pollfd的结构。
结论 本文其他的内容主要是得出了下面几个结论: 服务器要接收客户端的数据,要建立 socket 内核结构,主要包含两个重要的数据结构,(进程)等待队列,和(数据)接收队列,socket 在进程中作为一个文件...中同步 IO 都会有的问题,因为 Linux 没有提供异步 IO 实现; Linux 的 IO 多路复用用三种实现:select、poll、epoll。...如果客户端想向 Linux 服务器发送一段数据 ,C 语言的实现方式是: int main() { int fd = socket(); // 创建一个网络通信的socket结构体...2.2 poll 实现原理 和 select 类似,只是描述 fd 集合的方式不同,poll 使用 pollfd 结构而非 select 的 fd_set 结构。...图解 Linux 网络包接收过程 图解 | 深入理解高性能网络开发路上的绊脚石 - 同步阻塞网络 IO 从 linux 源码看 socket 的阻塞和非阻塞 Select、Poll、Epoll 详解 你管这破玩意叫
Linux入门 1.1 概述 1.2 Linux和Windows区别 1.3 Centos下载地址 网易镜像:Index of /centos/7/isos/ 搜狐镜像:Index of /centos.../7/isos/ 网易镜像:http://mirrors.sohu.com/centos/7.5.1804/isos/x86_64/ Linux文件与目录结构 2.1 Linux文件 Linux系统中一切皆文件...2.2 Linux目录结构
结构体对象,并把监听socket设置进去 FD_ZERO(&active_fd_set); FD_SET(listen_sock, &active_fd_set); active_fd_set...我们先记下这个问题,深入到linux的源码中取解释这个使用的正确性。 ...其实这就是该结构设计的一个精妙之处。fd_set的__fds_bits是一个16个元素的long int型数组,其总长度就是16*64=1024位。...我们到/usr/include/x86_64-linux-gnu/bits/select.h 文件中看看linux是如何让socket和这个空间中每一位进行对应的。...可以说linux内核对这块的设计真是做到了极致,不浪费一点点空间。
一般通过 time_t time = time(NULL); 获取. (2) struct timeb结构: 主要有两个成员, 一个是秒, 另一个是毫秒, 精确度为毫秒. 1 struct timeb...*readfds, fd_set *writefds, fd_set *exceptfds,struct timeval *timeout); 5 int pselect(int n, fd_set...*readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask...而实际实现中,linux上的nanosleep和alarm相同,都是基于内核时钟机制实现,受linux内核时钟实现的影响,并不能达到纳秒级的精 度,man nanosleep也可以看到这个说明,man里给出的精度是...:Linux/i386上是10 ms ,Linux/Alpha上是1ms
(1),struct fd_set 这是一个集合,这个集合中存放的是文件描述符(在unix、linux系统中任何的设备、管道、FIFO等都可通过文件描述符的形式来访问)。...FD_ISSET(int, fd_set *)检查集合中指定的文件描述符是否准备好(可读或可写) (2),struct timeval这是常用的一个结构体,用来表示时间值,有两个结构体成员:tv_sec...readfds:是指向fd_set结构的指针,这个集合中加入我们所需要监视的文件可读操作的文件描述符。...writefds:指向fd_set结构的指针,这个集合中加入我们所需要监视的文件可写操作的文件描述符。...exceptfds:指向fd_set结构的指针,这个集合中加入我们所需要监视的文件错误异常的文件描述符。
前言 平常linux系统用的也不少,那么linux下的每个目录都是用来干什么的,小伙伴们有仔细研究过吗?...让我们来了解下吧 Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: [root@jkc ~]# ls / bin boot dev etc home lib lib64...lost+found media mnt opt proc root run sbin srv sys tmp usr var 树状目录结构: 对各个目录的解释 /bin bin.../dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。.../media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
Linux 服务器处理网络请求有三种机制,select、poll、epoll,本文打算深入学习下其实现原理。...结论 本文其他的内容主要是得出了下面几个结论: 服务器要接收客户端的数据,要建立 socket 内核结构,主要包含两个重要的数据结构,(进程)等待队列,和(数据)接收队列,socket在进程中作为一个文件...中同步 IO 都会有的问题,因为 Linux 没有提供异步 IO 实现; Linux 的 IO 多路复用用三种实现:select、poll、epoll。...如果客户端想向 Linux 服务器发送一段数据 ,C 语言的实现方式是: int main() { int fd = socket(); // 创建一个网络通信的socket结构体...2.2 poll 实现原理 和 select 类似,只是描述 fd 集合的方式不同,poll 使用 pollfd 结构而非 select 的 fd_set 结构。
树状目录结构: ? 以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。.../boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。.../dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。.../media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。.../sys: 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
Linux 和 Windows 完全不同,在 Linux 中你可以在根目录下运行ls,观察它的目录结构: [img] / - 根目录 ------------------------- 顾名思义,根目录就是所有目录所在的目录...,它是 Linux 中所有目录的根,从某种概念上讲,它有点类似于 Windows中的磁盘驱动器符号。...在 / bin 中我们可以看到例如chmod、du这些我们经常使用的 Linux 命令程序。...你可以使用cat /proc/meminfo来查看关于内存的一些信息,或者使用cat /proc/version来查看 Linux 内核信息。...这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。 [image-20210218215516761] 1.
/linux/arch 中找到依赖于体系结构的部分。 2、内存管理 对任何一台计算机而言,其内存以及其它资源都是有限的。...为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。Linux 将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。...这样的布局可方便在 Linux 计算机之间共享文件系统的某些部分。 ? 图2 Linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。...8.6 文件系统在内核中的表示 ’ 内核数据结构 Linux内核的VFS子系统可以图示如下: ?...8.6 挂载文件系统 linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。
领取专属 10元无门槛券
手把手带您无忧上云