IPC,进程间通信

信号机制

也叫软中断,软件层次上对中断的模拟
kill -9 加进程号可以终止进程
linux下执行kill -l可以看到
这里面居然没有32 33 直接从31到34
所以一共是62个信号

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

信号17:子进程退出发送给父进程的信号
信号18:让暂停的进程继续运行
信号19:暂停进程,信号不能被忽略,捕捉,屏蔽
同样不能被忽略,捕捉,屏蔽的信号还有9号信号
只能执行默认动作
所谓捕捉,就是捕捉处理,在该信号发生时执行一些特定动作,比如自己定义的函数

管道

匿名管道

用于有父子关系,家族关系的,fork出来的进程之间的通信
管道需要创建于fork函数执行之前
这样才能复制内核中的打开文件表,具有相同的管道
因为管道本质是文件,匿名管道没有文件实体,只是存在于内核区的内存中而已

有名管道

无关系的进程,非fork出的进程之间的通信

eventfd,linux新特性

待补全

信号量

内存映射

将文件的一部分映射到某个进程的地址空间
其他打开该文件的进程就可以获取其中变化修改的内容
这不就是多个进程打开同一个文件?

共享内存

IPC,进程间通信
在虚拟地址空间的用户区中,设置一块可以多个进程共享的内存,共享内存开辟在堆区和栈区之间
相比其他如信号,管道等方式,这种方式在通信的时候,由于该共享内存不在内核区,无需内核的介入,所以效率会更高
但,多进程访问又会是新的问题,需要并发控制,加锁

IPC,进程间通信
linux 下用ipcs命令查询共享内存的信息
ipcs -a 可以查询共享内存,消息队列,信号量数组

0664是设置权限,创建共享内存,如果只是获取一块已经创建好的,则不需要
IPC,进程间通信
shmctl删除是删除不与任何进程关联的内存,如果还有进程尚未与该内存分离,尚在使用,则删除不了,只做个标记,等所有进程都不使用该内存,就会删除
shmctl标记删除,可以多个进程调用
这段只是记录下用法,如果直接用这段代码,刚创建的共享内存就会马上释放,因为没有别的进程在使用

消息队列

rabbitmq?这样和网络通信有什么区别?

socket套接字网络通信

原文链接: https://www.cnblogs.com/lxzbky/p/17103509.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    IPC,进程间通信

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/399826

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月14日 上午9:35
下一篇 2023年4月14日 上午9:35

相关推荐