Linux信号处理整理(一)

     在头文件中,定义了linux中的信号。实际上,信号的定义在中,该头文件包含在中。

     信号是一种软中断,在我们的应用程序中,很多情况都会使用信号,去处理异常,异步等情况。

     内核在信号来到时,做三个处理。

     1.忽略该信号;信号SIGKILL,SIGSTOP是不能被忽略的,它们提供了像超级用户提供终止程序的方法

     2.捕捉该信号;

     3.执行系统默认动作;

    信号太多,可以在书上网上,一个个去查找每个信号的作用,这里提及我们编写大型程序时会经常使用的几个信号。

   SIGPIPE,如果在写到管道时读进程已经终止,则产生该信号,当类型为SOCK_STREAM的套接字不再连接时,进程写到该套接字产生该信号,所以我们在编写服务器端程序时,必须捕捉该信号,做相应的处理,或者忽略该信号,否则一旦客户端失去连接,程序就挂掉了。

   SIGABRT,程序调用abort函数时推出

   SIGHUP ,终端接口接收该信号,发送给该终端相关的会话首进程,仅当终端的CLOCAL标志(没搞过这个)没有时,产生此信号。而我们捕捉该信号最主要的用途,就是通过发送这个信号,通知守护进程,让程序重新读取配置文件。

   SIGINT,用户中断,发送到终端的前台进程组的每个进程,终止程序

   SIGQUIT,终止前台所有进程,产生core文件

  SIGSEGV ,段错误,

  通常在我们的程序运行时,特别是服务器端程序被终止时,用户数据并没有得到保存,所以我们必须捕捉这些中断程序执行的信号,在捕捉到这些信号时,对用户数据做一次停机前保存,当然如果是硬中断,这个我就没搞过了。

你可能感兴趣的:(Linux,游戏,linux,终端,服务器,stream)