Linux C编程 第13章进程间通信方式十个问题及解答(2)

来源:互联网 发布:淘宝买射钉枪警察找我 编辑:程序博客网 时间:2024/05/16 20:31

             Linux C编程 第13章进程间通信方式十个问题及解答(2)

 

1.信号种类怎么分类?

  可以从两个不同的分类的角度对信号进行分类: 可靠性方面,分为可靠信号与不可靠信号;  与时间的关系上,可分为实时信号与非实时信号。

 

 

2.进程可以通过哪些方式来处理一个信号?

  忽略信号:即对信号不做任何处理,其中,有两个信号不能忽略,即SIGKILL SIGSTOP

  捕捉信号:定义信号处理函数,当信号发生时,执行相应的处理函数。

  执行默认操作:Linux 对每种信号都规定了默认操作,注意,进程对实时信号的默认反应是进程终止。

采用哪种方式来响应信号,取决于传递给相应API函数的参数。

 

 

3.发送信号的主要函数有哪些?

  主要有kill()raise()sigqueue()alarm()setitimer()abort()

 

 

4.可以用什么函数来实现信号的安装?

  signal()函数:用于传送信号给指定的进程;

  sigaction()函数:用于查询或设置信号处理方式。

 

 

5.使用信号注意事项?

  防止不该丢失的信号丢失;

  程序的可移植性;

  程序的稳定性。

 

 

6.满足什么样的函数是不可再入的?

  使用静态的数据结构;

  函数实现时,调用了malloc()或者free()函数;

  实现时使用了标准I/O函数的。

 

 

 

7.对消息队列的操作有几种类型?

  打开或创建消息队列;

  读写操作;

  获得或设置消息队列属性。

 

 

 

8.信号灯有哪些类型?

  二值信号灯:最简单的信号灯形式,信号灯的值只能取01,类似于互斥锁;

  计算信号灯:信号灯的值可以取任意非负值。

 

 

 

9.信号灯操作的步骤?

  打开过创建信号灯;

  信号灯值操作;

  获得或设置信号灯属性。

 

 

10.共享内存实现分为几个步骤?

  创建共享内存,使用shmget函数;

  映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。

 

原创粉丝点击