Q:进程间通信方式主要有几种?
A:主要有:1.管道和有名管道;2.信号;3.消息队列;4.共享内存;5.信号量;6.套接字六种。
Q:管道的特点是什么?
A:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个通道。(即管道具有单向性);
2. 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
3. 单独构成一种独立的文件系统。管道对于管道两端而言,就是一个文件,但它不是简单的文件,不属于某种文件系统,单独构成一种文件系统,并且只能存在内存中。(即管道具有即时性);
4. 数据的读入和读出:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区末端,并且每次都从管道缓冲区的头部读出。
Q:管道读写特点是什么?
A:管道两端各有任务,一端称为读端,一端称为写端,一般的I/O韩束都可用于管道,如close,read,write等函数。如管道的写端不存在,读端的返回值为零;写端存在时,请求的字节数大于pipe_buf,读端返回管道现有的数据字节数;请求的字节数小于pipe_buf,读端返回管道现有的数据字节数;管道写端人为关闭时,写入的数据将一直存在,知道读出为止。
Q:有名管道和管道的特点分别是什么?
A:管道应用的一个最大限制是他没有名字,只能用于具有亲缘关系的进程间通信,有名管道克服了这一限制;其不同于管道之处在于它提供了一个路径名和管道相关,以一个FIFO文件形式存在文件系统中,只要访问该路径,彼此即可通过FIFO相互通信;有名管道不支持诸如lseek()等文件定位操作。
Q:管道通信方式的应用场景是什么?
A:一般用于两个方面:
1.在shell中时常会用到管道(作为输出输入的重定向);
2.用于具有亲缘关系的进程间通信,用户自己创建管道,并完成读写操作。
Q:信号的来源及其本质是什么?
A:信号是在软件层次上对与中断机制的一种模拟,信号是进程间通信机制中唯一的异步通信机制,进程不需要通过任何操作来等待信号的到来。其来源有两个,分别为硬件来源和软件来源,其中软件来源最常用发送信号的系统函数是kill,raise,alarm,setitimer及sigqueue函数以及一些非法运算等操作。信号种类可以从两方面进行信号分类:1.可靠性方面,可分为可靠信号与不可靠信号;2.与时间的关系,可分为实时信号和非实时信号。
Q:信号处理方式有哪几种?
A:一般通过以下三种方式来处理一个信号:
1.忽略信号,即对信号不做任何处理,其中SIGKILL和SIGSTOP两个信号不能忽略。
2.捕捉信号,定义信号处理函数,当信号发生时,执行相应的处理函数。
3.执行默认操作,Linux对每个信号都规定了默认操作。
Linux如何响应信号,取决于传递给相应API函数的参数。
此外,信号安装通过signal()和sigaction()函数实现。