Linux系统/网络编程
Linux系统/网络编程
当如磐石
这个作者很懒,什么都没留下…
展开
-
Linux下的I/O复用与epoll详解
Linux下的I/O复用与epoll详解 前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。为什么会是EPOLLselect的缺陷 高并发的核心解决方案是1个线程处转载 2020-05-31 14:49:43 · 300 阅读 · 0 评论 -
linux获取文件大小的函数fstat()
linux获取文件大小的函数fstat()C语言fstat()函数:由文件描述词取得文件状态头文件:#include <sys/stat.h> #include <unistd.h>定义函数:int fstat(int fildes, struct stat *buf);函数说明:fstat()用来将参数fildes 所指的文件状态, 复制到参数buf 所指的结构中(struct stat). fstat()与stat()作用完全相同, 不同处在于转载 2020-05-24 18:08:47 · 1834 阅读 · 1 评论 -
INET_ADDRSTRLEN
转载:INET_ADDRSTRLEN <netinet/in.h>中有如下两个宏定义:1、#define INET_ADDRSTRLEN 16 /* for IPv4 dotted-decimal */第1个是将32位IPv4的地址, 使用10进制+句点表示时,所占用的char * 数组的长度为什么需要16位呢?这取决于存储IPv4&n转载 2020-05-24 09:35:40 · 1108 阅读 · 0 评论 -
Telnet 命令的使用与简单原理
转载:Telnet 命令的使用与简单原理最近遇到telnet这个命令,因为没有接触与使用过,感觉比较神秘,随着一点一点的查找,发现telnet也不过是一个与远端服务器进行通信的工具。Telnet最常见的是对服务器的远程登录,现在随着各种远程登录方式的普及,比如说远程桌面连接或者一些其他现成的工具连接Linux或者Windows服务器,telnet这种登录方式已经渐渐远去。但是这里也需要描述一下曾经telnet远程登录的原理。当你用Telnet登录进入远程计算机系统时,你事实上启动了两个程序,一个&转载 2020-05-24 08:53:50 · 779 阅读 · 1 评论 -
判断机器大小端的两种实现方式
转载:判断机器大小端的两种实现方式一、为什么会有大小端之分这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。二、定义大端模式:大端模式就是指把数据的高字节保存在内转载 2020-05-24 00:02:16 · 448 阅读 · 0 评论 -
S_ISREG等几个常见的宏 struct stat
S_ISREG等几个常见的宏 struct statS_ISLNK(st_mode):是否是一个连接.S_ISREG(st_mode):是否是一个常规文件.S_ISDIR(st_mode):是否是一个目录S_ISCHR(st_mode):是否是一个字符设备.S_ISBLK(st_mode):是否是一个块设备S_ISFIFO(st_mode):是否 是一个FIFO文件.S_ISSOCK(st_mode):是否是一个SOCKET文件man 2 stat 可以查到stat数据结构,其中的st_mo转载 2020-05-21 23:00:08 · 481 阅读 · 0 评论 -
socketpair的用法和理解
转载:https://blog.csdn.net/weixin_40039738/article/details/81095013?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158918635519725219904734%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=15891863551972521990转载 2020-05-11 17:24:40 · 608 阅读 · 0 评论 -
exit()与_exit()的区别
&n...转载 2020-05-06 15:48:31 · 333 阅读 · 0 评论 -
linux中对EINTR错误的处理
linux中对EINTR错误的处理 https://www.cnblogs.com/flyfish10000/articles/2576885.html EINTR错误的产生:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应信号处理函数返回时,该系统调用可能返回一个EINTR错误。例如:在socket服务器端,设置了信号捕获机制,有子进程,当在父进程阻塞于慢系统调用时由父进程捕...转载 2020-05-04 22:28:25 · 479 阅读 · 0 评论 -
127.0.0.1和localhost和本机IP三者的区别!!!
1,什么是环回地址??与127.0.0.1的区别呢??环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址)。可以这么说:同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。(也就是说:不用再通过什么链路层,物理层...转载 2020-05-02 14:56:09 · 187 阅读 · 0 评论 -
关于PF_INET和AF_INET的区别
在写网络程序的时候,建立TCP socket: sock = socket(PF_INET, SOCK_STREAM, 0);然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address fa...转载 2020-05-01 16:43:53 · 455 阅读 · 0 评论 -
TCP协议下的recv函数
recv函数函数原型:int recv( SOCKET s, char *buf, int len, int flags)功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。参数一:指定接收端套接字描述符;参数二:指明一个缓冲区,该缓冲区用来...转载 2020-05-01 10:52:58 · 711 阅读 · 0 评论 -
Linux IO模型与Reactor、Proactor模式
转载自https://blog.csdn.net/pbrlovejava/article/details/105212836?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-tas...转载 2020-04-29 21:17:39 · 173 阅读 · 0 评论 -
select, poll, epoll
selectfd_set 使用数组实现1.fd_size 有限制 1024 bitmapfd[i] = accept()2.fdset不可重用,新的fd进来,重新创建(调用select前需要重置)3.用户态和内核态拷贝产生开销4.O(n)时间复杂度的轮询成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0具有超时时间poll基于结构体存储fdstruct pol...原创 2020-04-26 22:47:26 · 90 阅读 · 0 评论 -
生产者消费者条件变量模型
#include <stdlib.h>#include <unistd.h>#include <pthread.h>struct msg { struct msg *next; int num;};struct msg *head;pthread_cond_t has_product = PTHREAD_COND_INITIALI...原创 2020-04-26 16:23:27 · 125 阅读 · 0 评论 -
libgcc_s.so.1 must be installed for pthread_cancel to work
libgcc_s.so.1 must be installed for pthread_cancel to workUbuntu19.04使用gcc编译时出现上述错误:线程涉及第三方库gcc在编译时不会自动帮我们链接添加,需要手动加上-pthread链接线程库。将gcc pthrd_test.c -o pthrd_test改为gcc pthrd_test.c -o pthrd_test -...原创 2020-04-08 15:15:12 · 2213 阅读 · 1 评论