Posts
All the articles I've posted.
-
tmux:终端复用利器
什么是终端复用(terminal multiplexer)?终端复用可以让你在同一个终端同时打开不同的程序并观察输出,同时允许你方便地退出和恢复这些程序的使用。 使用tmux可以达到终端复用的目的,下图为tmux在同一个终端窗口中同时打开不同程序的一个示例: 安装 对于 Mac OS,使用简单...
-
博客使用上了网易云跟贴
本来对于多说不支持 HTTPS 就不太满意,早就想换一个评论系统了。昨天上去多说的官网一看,发现多说竟然要在今年6月1号关闭了。 可能是多说没有找到赚钱的路子吧,这样的话自己只能默默祝福一下了。 多说的关闭也坚定了自己将博客的评论跟换成网易跟贴的决心。 说干就干。
-
make命令与makefile文件
一、多个源文件带来的问题 在编写c/c++测试程序时,我们习惯每次修改一处代码,然后就马上编译运行来查看运行的结果。这种编译方式对于小程序来说是没有多大问题的,可对于大型程序来说,由于包含了大量的源文件,如果每次改动一个地方都需要编译所有的源文件,这个简单的直接编译所有源文件方式对程序员来说简...
-
epoll 水平触发与边缘触发
epoll也是实现I/O多路复用的一种方法,为了深入了解epoll的原理,我们先来看下epoll水平触发(level trigger,LT,LT为epoll的默认工作模式)与边缘触发(edge trigger,ET)两种工作模式。 使用脉冲信号来解释LT和ET可能更加贴切。Level是指信号只...
-
I/O多路复用之POLL系统调用
函数类似于函数,也可以实现I/O多路复用。函数的声明如下: 第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个结构,用于指定测试某个给定描述符的条件。 要测试的条件由成员指定,函数在相应的成员中返回该描述符的状态。和都由某个特定条件的一位或多位构成。下面表格列出了用于指定标志以...
-
I/O多路复用之select系统调用
I/O多路复用模型允许我们同时等待多个套接字描述符是否就绪。Linux系统为实现I/O多路复用提供的最常见的一个函数是函数,该函数允许进程指示内核等待多个事件中的任何一个发生,并只有在一个或多个事件发生或经历一段指定的时间后才唤醒它。 作为一个例子,我们可以调用,告知内核仅在下列情况发生时才返...
-
多线程并发服务器
在多进程并发服务器的应用程序中,父进程一个连接,一个子进程,该子进程负责处理与该连接对端的客户之间的通信。 尽管多进程的编程模型中,各进程拥有独立的地址空间,减少了出错的概率,然而,调用却存在一些问题: 是昂贵的,要把父进程的内存映像复制到子进程,并在子进程中复制所有描述符,这个操作是较重量级...
-
多进程并发服务器
我们来考虑有多个客户同时连接一个服务器的情况。在前面的TCP套接字编程的例子中,我们已经看到,服务器程序在接受来自客户端的一个新连接时,会创建出一个新的套接字(已连接套接字),而原先的监听套接字则继续监听后面的连接请求。如果服务器不能立刻接受后来的连接,它们将被放到队列中以等待处理。 原先的套...
-
监听套接字与已连接套接字
监听套接字(listening socket)和已连接套接字(connected socket)之间的区别常会使很多人感到迷惑。本文简要描述一下这两者的区别。 为了说明监听套接字与已连接套接字的区别,我们先来看一下套接字在连接中的含义。 从内核的角度来看,一个套接字就是通信的一个端点。一个连接...
-
TCP套接字编程入门
概述 套接字(socket)是一种通信机制,凭借这种机制,客户与服务器的通信既可以在本地单机上进行,也可以跨网络进行。 图:基本的TCP客户/服务器应用程序的套接字函数 图中展示了一对TCP客户与服务器进程之间进行通信时调用套接字函数的交互情况。服务器首先启动,然后监听客户的连接。稍后客户试图...