sigpipe信号
- 一种跨设备实现多进程间通信的方法
-
liwen012019.08.15前言:在linux系统进程间通信的方式有消息,消息队列,管道,内存映射,套接字等多种方式。在Android系统上进行进程间通信主要是使用Binder,其它的还有共享内存,管道,RPC和UnixDomain等方式。但是,在linux中常用的消息队列,在Androi...
- Linux并发IO详解(上)
-
Introduction在传统的网络服务器的构建中,IO模式会按照Blocking/Non-Blocking、Synchronous/Asynchronous这两个标准进行分类,其中Blocking与Synchronous基本上一个意思,而NIO与Async的区别在于NIO强调的是Polling(轮...
- 一文带你解密 TCP/IP网络协议
-
近期工作,跟网络协议相关,这让我有机会更深入学习网络协议,而之前很长一段时间,我对网络协议的理解都停留在比较浅的层面。比如:TCP是面向连接的、可靠传输,而UDP是非连接的、不可靠传输,TCP建连需要3次握手,会造成delay,UDP更快。比如:socket编程,服务器socketcreate、b...
- PostgreSQL数据库信号处理——kill backend_pid
-
killpostgres_pidPostgreSQL推荐使用的杀backend进程的方法有两种,第一种是使用pg_terminate_backend(pid)存储过程,第二是通过pg_ctlSIGNAL<pid>。这两种方法实际上都是给backend进程发了一个signal,让相关...
- 为啥docker需要shim?
-
这个问题有点历史渊源了,其实如果玩过早期的docker的话,可能会记得,docker最开始的时候是没有shim进程的。那时候所有的容器进程都挂在dockerd进程下面,也就是说,如果dockerd重启了,那么所有的容器都得跟着挂了。还是IT界那句俗话,没有什么东西是加一层不能解决的。那么为了...
- 浅析进程间通信的几种方式(含实例源码)
-
一.为什么进程间需要通信?1).数据传输一个进程需要将它的数据发送给另一个进程;2).资源共享多个进程之间共享同样的资源;3).通知事件一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件;4).进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),该控制进程希...
- TCP连接状态的多种判断方法
-
liwen01_2020.01.10前言在TCP网络编程模型中,无论是客户端还是服务端,在网络编程的过程中都需要判断连接的对方网络状态是否正常。在linux系统中,有很多种方式可以判断连接的对方网络是否已经断开。通过错误码和信号判断通过select系统函数判断通过TCP_INFO套接字选项判断通过S...
- 网络编程中需要处理的常用信号总结
-
一、SIGPIPE当往一个写端关闭的管道或socket连接中连续写入数据时会引发SIGPIPE信号,引发SIGPIPE信号的写操作将设置errno为EPIPE。在TCP通信中,当通信的双方中的一方close一个连接时,若另一方接着发数据,根据TCP协议的规定,会收到一个RST响应报文,若再往这个服务...
- socket 什么情况下可读
-
一、满足下列四个条件中的任何一个时,一个套接字准备好读。1.该套接字接收缓冲区中的数据字节数大于等于套接字接收缓存区低水位。对于TCP和UDP套接字而言,缓冲区低水位的值默认为1。那就意味着,默认情况下,只要缓冲区中有数据,那就是可读的。我们可以通过使用SO_RCVLOWAT套接字选项(参见set...
- Skynet服务器框架——C源码剖析启动流程
-
引言:在Linux下配置安装skynet的环境这里略过,为了从底层更好地理解整个框架的实现过程,我们有必要剖析一下源码,由于底层的源码都是用C语言写的,lua脚本基本是用来进行业务层开发,所以我们从C源码开始解读框架。打开下载包的skynet-src目录,这里是skynet框架的核心C源码,...