信号的产生
信号的产生方式
-
键盘产生
- 键盘产生的信号只能发送给前台进程。例如:[Ctrl+C]…
-
程序异常
- 除0错误。除0错误会导致硬件错误。
- core dumped(核心转储):当进程异常退出时,操作系统会将该进程发生异常退出之前在内存中的数据存储至硬盘上。
- 但是通常发生程序异常退出时,用户并不会发现程序产生了一个core dumped文件,这是因为操作系统当前给用户可产生core file size大小为0,因为core文件的大小不是很小的,所以一般系统会将可产生core文件的大小为0,即通常不产生core文件。
- ulimit -a:查看系统当前分配给用户设置资源方面的限制条件。
- core文件前面是core,后面是引起产生该core文件的进程pid。
- 使用core文件调试代码:在Linux环境下,进入使用gdb调试代码,在gdb内部,使用core-file [core文件名],就会直接定位到引发core文件产生的对应行。
- 2、9号信号不会产生core文件。
-
使用kill命令
-
通过系统调用接口给特定进程发送信号
-
#include<signal.h> int kill(pid_t pid, int signo); //向特定进程发送特定信号;成功返回0;失败返回-1
-
#include<signal.h> int raise(int signo); //向当前进程发送特定信号;成功返回0;失败返回-1
-
#include<stdlib.h> void abort(void); //使当前进程收到信号而异常终止;就像exit()函数一样,abort()函数总是会成功的,所以没有返回值
-
-
由软件条件发送信号
-
SIGPIPE:SIGPIPE是一种由软件条件产生的信号,当一个管道的读端被关闭时,这时候操作系统就会检测到该管道中写入的数据不
-