进程间通信方式(1)

Q:进程间通信方式主要有几种?

A:主要有:1.管道和有名管道;2.信号;3.消息队列;4.共享内存;5.信号量;6.套接字六种。
Q:管道的特点是什么?
A:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个通道。(即管道具有单向性);

2. 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);

3. 单独构成一种独立的文件系统。管道对于管道两端而言,就是一个文件,但它不是简单的文件,不属于某种文件系统,单独构成一种文件系统,并且只能存在内存中。(即管道具有即时性);

4. 数据的读入和读出:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区末端,并且每次都从管道缓冲区的头部读出。
Q:管道读写特点是什么?
A:管道两端各有任务,一端称为读端,一端称为写端,一般的I/O韩束都可用于管道,如closereadwrite等函数。如管道的写端不存在,读端的返回值为零;写端存在时,请求的字节数大于pipe_buf,读端返回管道现有的数据字节数;请求的字节数小于pipe_buf,读端返回管道现有的数据字节数;管道写端人为关闭时,写入的数据将一直存在,知道读出为止。

Q:有名管道和管道的特点分别是什么?
A:管道应用的一个最大限制是他没有名字,只能用于具有亲缘关系的进程间通信,有名管道克服了这一限制;其不同于管道之处在于它提供了一个路径名和管道相关,以一个FIFO文件形式存在文件系统中,只要访问该路径,彼此即可通过FIFO相互通信;有名管道不支持诸如lseek()等文件定位操作。
Q:管道通信方式的应用场景是什么?
A:一般用于两个方面:

1.shell中时常会用到管道(作为输出输入的重定向);

2.用于具有亲缘关系的进程间通信,用户自己创建管道,并完成读写操作。
Q:信号的来源及其本质是什么?

A:信号是在软件层次上对与中断机制的一种模拟,信号是进程间通信机制中唯一的异步通信机制,进程不需要通过任何操作来等待信号的到来。其来源有两个,分别为硬件来源和软件来源,其中软件来源最常用发送信号的系统函数是kill,raise,alarm,setitimersigqueue函数以及一些非法运算等操作。信号种类可以从两方面进行信号分类:1.可靠性方面,可分为可靠信号与不可靠信号;2.与时间的关系,可分为实时信号和非实时信号。
Q:信号处理方式有哪几种?
A:一般通过以下三种方式来处理一个信号:

1.忽略信号,即对信号不做任何处理,其中SIGKILLSIGSTOP两个信号不能忽略。
2.捕捉信号,定义信号处理函数,当信号发生时,执行相应的处理函数。

3.执行默认操作,Linux对每个信号都规定了默认操作。

Linux如何响应信号,取决于传递给相应API函数的参数。

此外,信号安装通过signal()和sigaction()函数实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值