管道
比如 Linux
下的命令,就是先执行 ll 命令然后把 ll
命令的结果,再进行筛选,得到最后的结果,这个就是一个管道。即将上一个进程的结果,作为下一个程序的输入。
ll | grep a
消息队列
在消息传递系统中,进程间以消息为单位交换数据,用户通过系统提供的一组命令来实现通信,而操作系统隐藏了具体的通信细节,从而简化了通信程序。
- 进程直接把消息发送给接收进程,并把消息挂载到 接收程序的消息缓冲队列中,接收程序从消息缓冲队列中获得消息。
共享内存
因为程序在运行起来的时候,都会有个映射表(页表),不同的进程,他们的虚拟地址
,可能相同,但是物理地址
肯定是不同的,操作系统可以通过一些方式,让他们映射到同一个块物理内存上,这样就可以实现进程之间通信了。
套接字
通过套接字的方式,实现进程之间的通信,其实非常的常见,比如你连接 mysql
数据库,其实就是通过 3306
这个套接字实现的。
信号量
信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
信号
信号就是说一个进程可以给另一个进程发送信号。
在 linux
下,可以使用 kill -l
, 命令来查看,信号
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