硬性关闭TCP连接

硬性关闭是指:使用非正常的手法立即终止当前TCP连接,只求关闭,不考虑后果,丢失数据也无所谓。这种方式在处理一些紧急状况时或许是必要的。

正常的关闭流程是在连接双方的配合下经历四次握手完成的。应用程序里的操作就是调用close接口。

对socket实施close操作,实际上会产生一个FIN报文段,这个段当然也要遵从TCP的规则,它会在发送缓冲区中排队。显然,调用close的一方要想实际发出这个FIN段,当然要先将排在它之前的那些字节发出去才行。也就是说,调用close后,到实际发出FIN之前,发送缓冲区中的数据已经发送到对端了。

上面说的是正常的关闭,用close接口即可发起。非正常关闭,也是用这个接口,只不过要配置一下socket的LINGER选项。

linger有“苟延残喘”的意思 ...


Linux man page

man page是分章节的,常见的章节有8个,如果不指定章节,它会显示1-8中最先出现的那个

  1. 都是用户命令(所有用户都可以使用的命令,包括普通用户)这些命令存在于/bin,/usr/bin,/usr/local/bin

  2. 都是系统调用

  3. 库调用

  4. 特殊文件(设备文件都是特殊文件)

  5. 文件格式 ...


Linux下查看进程状态的常用命令

ps

专门用于查看进程状态的命令。执行该命令会得到一个静态结果,是调用命令时,进程的一个快照。若直接使用ps命令,只会给出属于当前用户且在当前终端上(带终端且终端为当前终端)的进程。

要带选项的话,有两种写法:BSD风格和System V风格,System V风格每个选项前要加"-",BSD风格不需要。

BSD风格常用选项:

  • a:显示所有用户的带终端的进程
  • u ...