高并发服务器 一、多进程并发服务器 1. 实现示意图 2. 使用多进程并发服务器时要考虑以下几点: 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符) 系统内创建进程个数(与内存大小相关) 进程创建过多是否降低整体服务性能(进程调度) 3. 使用多进程的方式, 解决服 ...
分类:
系统相关 时间:
2019-05-14 13:15:53
阅读次数:
123
整体大纲 一、套接字概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写 ...
分类:
系统相关 时间:
2019-05-14 13:06:55
阅读次数:
131
sendfile和splice零拷贝 sendfile: ? 原始:首先将文件读到内核态的文件描述符中,然后再拷贝给用户态buf,再重新拷贝给内核态中网络缓冲区发给客户端。拷贝2次 ? sendfile是一个接口能直接让文件从内核态的文件描述符送到网络缓冲区从而实现零拷贝 ? 函数原型: ? out ...
分类:
系统相关 时间:
2019-05-13 22:48:10
阅读次数:
244
一、应用程序 poll(...)函数的返回值:>0 表示 fds[]中存放的某些文件描述符的状态发生了变化 =0 表示 fds[]中存放的文件描述符的状态没有变化,并且调用超时了 <0 表示有错误发生 看到实验结果:当5秒没有按键按下时,timeout fds[0].revents = 0 当有按键 ...
分类:
系统相关 时间:
2019-05-09 15:22:22
阅读次数:
157
文件重定向涉及关键函数: int dup(fd) - 新建文件描述符,指向 fd 所指向的文件; int dup2(fd1, fd2) - fd2 指向 fd1 指向的文件,若fd2事先已经指向某文件,会自动断开指向; 举例: 重定向标准输出,到一个指定的文件。 代码: 几个标准文件描述符: 标准输 ...
分类:
其他好文 时间:
2019-05-09 10:44:34
阅读次数:
127
Linux中的输入文件、输出文件、错误输出 | 文件名称 | 文件描述符 | | | | | 标准输入 | 0 (默认是键盘) | | 标准输出 | 1 (默认是屏幕) | | 标准错误 | 2 (默认是屏幕) | 输出重定向 Linux中&表示后台运行, 表示输出重定向 | 命令 | 描述 | | ...
分类:
系统相关 时间:
2019-05-07 13:11:18
阅读次数:
185
Linux网络编程——多路复用之epoll ? epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合 ...
分类:
系统相关 时间:
2019-05-02 23:08:57
阅读次数:
198
Channel概述 Channel是一个通道,可以通过它读取和写入数据,通道与流的不同之处在于通道是双向的,流是单向的;NIO中通过channel封装了对数据源的操作,通过channel 我们可以操作数据源,但又不必关心数据源的具体物理结构。在大多数应用中,channel与文件描述符或者socket ...
分类:
编程语言 时间:
2019-05-02 11:23:39
阅读次数:
160
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符, ...
分类:
其他好文 时间:
2019-04-30 20:18:37
阅读次数:
152
1、文件描述符 对于内核来说,所有打开的文件都通过文件描述符来引用。文件描述符是一个非负整数。当打开一个现有的文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回文件描述符描述符标识该文件,将其作为参数传递给read或者write函数。通常文件描述 ...
分类:
其他好文 时间:
2019-04-30 18:29:16
阅读次数:
152