进程间通信原因因为每一个进程都是拥有一个独立的虚拟地址空间的,促使进程独立,导致了进程之间需要协作。进程间通信分为数据传输-----管道,消息队列数据共享-----共享内存进程控制-----信号量首先先谈谈管道和共享内存管道---匿名管道,命名管道本质:管道其实就是一块内存,是内核当中的缓冲区匿名管道---没有标识特性:具有亲缘关系的进程间通信半双工,数据只能有一个流向提供字节流服务自带同步与互斥
分类:
系统相关 时间:
2020-01-30 12:54:12
阅读次数:
109
网络编程Socket之RST详解 产生RST的三个条件: 目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器; TCP想取消一个已有的连接; TCP接收到一个根本不存在的连接上的分节; 现在模拟上面的三种情况: client: 1 #include <stdio.h> 2 #include ...
分类:
其他好文 时间:
2019-08-14 21:35:14
阅读次数:
113
1、编译并执行如上代码, gcc -o sigpipe sigpipe.c 通过另外的一个Linux终端执行killall -SIGPIPE sigpipe 可以看到sigpipe 程序不会退出 2、将main函数中SetupSignal();行注释掉编译 通过另外的一个Linux终端执行killa ...
分类:
其他好文 时间:
2019-03-29 01:00:14
阅读次数:
198
本文主要讲解常见信号的处理方式。 Sighup:终端关闭时,发送给此会话的所有进程组。Setsid成功后不再属于该会话,收不到该消息。 Sigterm: kill process_id时产生。 Sigpipe:向一个写端关闭的管道写数据,第二次写时会收到。 一般来说,Sigtstp、sigttou、 ...
分类:
系统相关 时间:
2018-10-17 20:44:25
阅读次数:
224
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGAL ...
分类:
系统相关 时间:
2018-08-01 14:06:37
阅读次数:
185
匿名管道(pipe) 管道是一种最基本的IPC机制,由pipe函数创建: 调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0 ...
分类:
其他好文 时间:
2018-07-23 14:51:26
阅读次数:
231
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TC ...
分类:
其他好文 时间:
2018-02-25 15:58:36
阅读次数:
255
1.概述 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。又或者当一个进程向某个已经收到RST的socket执行写操作是,内核向 ...
分类:
其他好文 时间:
2017-12-01 15:10:27
阅读次数:
109
有时候,希望程序退出时能进行一些处理,比如保存状态,释放一些资源。c语言开发的linux程序,有可能正常退出(exit),有可能异常crash,而异常crash可能是响应了某信号的默认处理。这里总结一下这些情况,如何获取一个统一的退出处理的点,说白了就是写一个回调函数,让他在程序正常或异常退出时调用 ...
分类:
系统相关 时间:
2017-11-07 20:54:29
阅读次数:
269
https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/CommonPitfalls/CommonPitfalls.html#//app ...
分类:
Web程序 时间:
2017-10-21 10:57:14
阅读次数:
194