Linux进程间通信

 进程间通信-信号-pipe-fifo

管道

在内核中借助环形队列机制,使用内核缓冲区实现。 管道是一种伪文件
管道常见的形式:

管道的特点:管道中的数据只能一次读取, 数据在管道中只能单向流动。 不能在一端同时读写。管道pipe()只用在血缘关系进程间。

pipe()的使用

尽管管道是由单个进程创建的,却很少在单个进程间使用。管道的典型用途是为两个不同的进程提供进程间的通信。
管道的一端只能占用读或写,因此在使用时需在一端关闭读端(或写端),而在另一端关闭写端(或读端)。

有名管道fifo

FIFO有两种用途:

(1) FIFO由s h e l l命令使用以便将数据从一条管道线传送到另一条,为此无需创建中间临时文件。

(2) FIFO用于客户机-服务器应用程序中,以在客户机和服务器之间传递数据。

如可以用于无血缘关系的进程间通信。

pipedemo.c 代码运行:

 

 运行pipedemo2.c:

 

 运行代码sigdemo1.c如下:

 

 可知此处的中断处理函数是输出一个OUCH

运行代码sigdemo2.c如下:

 

运行 代码 sigactdemo.c如下:

 

 我们输入ok,会提示input :ok,而我们按下ctrl+C,会提示可见ctrl+c为signal 2

运行代码sigactdemo2.c如下:

 

posted @ 2022-11-09 14:43  20201320石志涛  阅读(19)  评论(0编辑  收藏  举报