存档

文章标签 ‘中断’

Linux系统下信号总结

2010年4月15日

  在Linux系统中,需要对一事件的发生通知给正在运行的进程。信号就是这种通知的工具,它的显著特点是:不是用于将数据发送给某一进程,而是通知一个进程某一个特定事件的发生。

  信号拥有自己特定的名字,均以SIG开始。它们在头文件中被定义为一个正整数,称为信号编号(signal number)。

  • SIGHUP:当终端发现断线情况发送给与控制终端相连的控制进程的信号,或控制进程运行结束时发出的信号。它通常用来通知守护进程重新读取系统配置文件。
  • SIGINT:进程中断信号,可以用来中断一个正在运行的进程。通常是从终端输入的中断指令,如CTRL+C或Delete。
  • SIGQUIT:用于中断前台进程组中的所有进程的信号。由终端输入的退出指令Ctrl+\产生。这一信号在中断进程的同时,还将产生一个core文件。
  • SIGILL:执行非法硬件指令时产生的错误。
  • SIGTRAP:跟踪陷阱信号。
  • SIGIOT:I/O错误信号。
  • SIGBUS:系统总线错误时产生的信号。
  • SIGFPE:浮点运算中发生溢出错误时产生的信号。
  • SIGKILL:可用于终止任何一个进程的信号,只能由系统管理员发出,是不可捕捉种被忽略的信号之一。
  • SIGUSR1:用于用户自定义的预留信号,可由用户在应用程序中自行定义。
  • SIGSEGV:使用非法内存地址所产生的信号。
  • SIGUSR2:同SIGUSR1。
  • SIGPIPE:当对一个读进程已经运行结束的管道执行写操作时产生的信号。
  • SIGALRM:由alarm函数设定的时间段终止时,会产生此信号。
  • SIGTREM:调用kill(1)命令时缺省产生的信号。
  • SIGCHLD:当一个子进程结束或中断时,用通知其父进程的信号。必要时,父进程可以通过这一信号来了解子进程状态变化及结束状态信息。但在大多数情况下,这一信号将被忽略。
  • SIGCONT:是使已被中断的进程继续执行的信号。当此信号为某一特定进程产生后,如果此时该进程没有被中断,将不会有任何操作发生;但如果该进程是一中断了的进程,即使SIGCONT被阻塞或被忽略,此进程也将会继续进行。
  • SIGSTOP:中断进程的信号。它是一个作业信号,同时也是不可被捕捉和不可被忽略的信号之一。
  • SIGTSTP:交互式的中断信号。通常是在输入中断键Ctrl+Z时,由终端驱动器产生。
  • SIGTTIN:当一个后台进程需要从终端读取数据时,终端驱动器产生的信号。当读取数据的进程忽略或阻塞这个信号,或读取数据的进程所在的进程组是孤立进程组时,信号不会产生,并且读操作将发生错误返回,将errno设置成EIO。
  • SIGTTOU:当一个后台进程需要向终端写入数据时,终端驱动器产生的信号。当写入数据的进程忽略或阻塞这个信号,或写数据的进程所在的进程组是孤立进程组时,信号不会产生,并且写操作将发生错误返回,将errno设置成EIO。与SIGTTIN不同的是,进程可以选择对控制终端进行后台写。如果后台写不被允许则同SIGTTIN信号一样。
  • SIGURG:套接字上出现紧急情况时产生的信号。
  • SIGXCPU:超出CPU时间限制时产生的信号。
  • SIGXFSZ:超出文件大小时产生的信号。
  • SIGVTALRM:虚拟定时器报警信号。
  • SIGPROF:Profiling定时器报警信号。
  • SIGWINCH:终端窗口改变时产生的信号。
  • SIGIO:表示某个特定文件描述符上可以进行I/O操作的信号。
  • SIGPWR:电源失效的信号。
  • SIGABRT:调用abort函数时产生的信号,将会使进程非正常结束。
  • SIGEMT:实现性定义硬件错误发生时产生的错误。

  其中,SIGCHLD、SIGCONT、SIGSTOP、SIGTSTP、SIGTTIN、SIGTTOU这六个信号被称为作业控制信号,它们的共同特点是:都是用于协调和组织各进程运行的,即用于实现所谓作业控制的。

  

  原创文章如转载,请注明:转载自张文杰的博客http://zhangwenjie.net ]

  本文链接地址:http://zhangwenjie.net/archives/367.html

分享家:Addthis中国

Linux , ,