pqsignal.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pqsignal.c
  4.  *   reliable BSD-style signal(2) routine stolen from RWW who stole it
  5.  *   from Stevens...
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  *
  10.  * IDENTIFICATION
  11.  *   $Header: /usr/local/cvsroot/pgsql/src/interfaces/libpq/pqsignal.c,v 1.10 1999/02/13 23:22:43 momjian Exp $
  12.  *
  13.  * NOTES
  14.  * This shouldn't be in libpq, but the monitor and some other
  15.  * things need it...
  16.  *
  17.  *-------------------------------------------------------------------------
  18.  */
  19. #include <stdlib.h>
  20. #include <signal.h>
  21. #include "pqsignal.h"
  22. pqsigfunc
  23. pqsignal(int signo, pqsigfunc func)
  24. {
  25. #if !defined(USE_POSIX_SIGNALS)
  26. return signal(signo, func);
  27. #else
  28. struct sigaction act,
  29. oact;
  30. act.sa_handler = func;
  31. sigemptyset(&act.sa_mask);
  32. act.sa_flags = 0;
  33. if (signo != SIGALRM)
  34. act.sa_flags |= SA_RESTART;
  35. if (sigaction(signo, &act, &oact) < 0)
  36. return SIG_ERR;
  37. return oact.sa_handler;
  38. #endif  /* !USE_POSIX_SIGNALS */
  39. }