第六十三章、Linux进程间通信的方法——信号

在Linux中,进程间通信机制有多种,今天我们来介绍下其中一种:

信号

那么信号一般是用来干什么的呢?

一般来说,信号主要用来通知进程异步事件的发生。在最初的时候,信号设计的目的是为了处理错误,同时它们也用来作为最基本的IPC机制,在Linux中可以识别64种不同的信号,这些信号中的大部分都有了预先定义好的意义,其中SIGUSR1和SIGUSR2可以由应用程序来定义。进程可以显式的用kill或者killpg系统函数来向另一个进程或进程组发信号。

当一个信号正在被处理时,所有同样的信号都将暂时搁置,直到这个信号处理完成。

在Linux系统中我们可以用kill -l来显示系统中的信号:

第六十三章、Linux进程间通信的方法——信号

那么进程接收到核心程序所发出的信号后,处置的方式有哪些呢?

1、 忽略这个信号;(进程可以忽略大部分信号,但是有两个时不能忽略的a、SIGSTOP这个信号将中断进程的执行;b、SIGKILL这个信号将强制进程退出。

2、 执行一个处理此信号的函数;

3、 暂停进程的执行;

4、 重新启动刚才被暂停的那个进程;

5、 采用系统默认的操作,大部分信号的默认操作都是终止进程的执行。

有些信号除了会终止进程的执行,还会留下一个称为core的文件,这个过程称为内核转储,这个文件存有进程当时在内存中的内容,通常用于事后查错。

上面我们使用kill -l查看了系统中预定义的信号,那么下面我们来简单介绍一些信号的意义:

第六十三章、Linux进程间通信的方法——信号

第六十三章、Linux进程间通信的方法——信号


分享到:


相關文章: