首页 > 代码库 > 【UNIX】什么是进程间FIFO通信以及信号通信

【UNIX】什么是进程间FIFO通信以及信号通信

上篇中的无名管道通信是父子进程之间的通信,限定了进程之间的通信,从而就有了有名管道,它可以使不同进程之间进行通信,有名管道可以通过指定路径名来指出,兵长文件系统中可见。进程通过文件IO来操作有名管道,有名管道遵从先进先出的原则,但是不支持lseek函数。

1)int mkfifo(const char *pthname,mode_t mode)创建有名管道,

2)在内核中创建对象,但没有打开读写,有名管道的读写要自己打开,

3)文件对象在文件系统中创建文件节点,

4)在两个进程中,只会创建一次,若有节点则不会创建,第二次创建会返回错误信息,

FIFO的一般形式函数:

<script src="https://code.csdn.net/snippets/538818.js" type="text/javascript"></script>

信号通信

1)信号通信是在软件层次上对中断机制的一种模拟,是一种异步通信方式。

信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件,

若果该进程当前处于未执行的状态,该信号就由内核保存起来,直到该进程恢复执行再传递给它,若果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到阻塞被取消才传递给进程。

2)信号的生命周期




【UNIX】什么是进程间FIFO通信以及信号通信