信號記錄

  1. int kill(pid_t pid,int sig);
  2. int raise(int sig);
  3. unsigned alarm(unsigned seconds);
  4. /*sigset_t is signal mask*/
  5. int sigaddset(sigset_t *set,int signo);
  6. int sigdelset(sigset_t *set,int signo);
  7. int sigemptyset(sigset_t *set);
  8. int sigfillset(sigset_t *set);
  9. int sigismember(sigset_t *set,int signo);
  10. /*
  11.  *how can be SIG_BLOCK,SIG_UNBLOCK,SIG_SETMASK
  12.  *SIG_BLOCK will take signal add into signal class
  13.  *SIG_UNBLOCK will take out signal from signal class
  14.  *SIG_SETMASK will set signal class   "signal class 信號集"  
  15.  */
  16. int sigprocmask(int how,const sigset_t *restrict set,sigset_t *restrict oset);
  17. /*if set sa_flags to 0,use sa_handler
  18.   if set sa_flags to SA_SIGINFO,use sa_sigaction
  19. */
  20. int sigaction(int sig,const struct sigaction *restrict act,struct sigaction *restrict oact);
  21. struct sigaction{
  22.     void (*sa_handler)(int signo);
  23.     sigset_t sa_mask;
  24.     int sa_flags;
  25.     void (*sa_sigaction)(int signo,siginfo_t *info,void *contest);
  26. };
  27. /*si_code:SI_USER,SI_QUEUE,SI_TIMER,SI_ASYNCIO,SI_MESGQ*/
  28.     struct{
  29.         int si_signo;
  30.         int si_code;
  31.         union sigval si_value;
  32.     }siginfo_t;
  33.     
  34.         union sigval{
  35.         int sival_int;
  36.         void *sival_ptr;
  37.         }
  38. /*restrict說明這個變量沒有別的指針可以修改,讓編譯器生成只讀內存一次的代碼。*/
  39. int pause(void);
  40. int sigsuspend(const sigset_t *sigmask);
  41. int sigwait(const sigset_t *restrict sigmask,int *restrict signo);
  42. void siglongjmp(sigjmp_buf env,int val);
  43. int sigsetjmp(sigjmp_buf env,int savemask);
  44. #include <aio.h>
  45. int aio_read(struct aiocb *aiocbp);
  46. int aio_write(struct aiocb *aiocbp);
  47. int aio_error(const struct aiocb *aiocbp);
  48. ssize_t aio_return(struct aiocb *aiocbp);
  49. int aio_suspend(const struct aiocb *const list[],int nent,const struct timespec *timeout);
  50. int aio_cancel(int fildes,struct aiocb *aiocbp);
  51. struct aiocb{
  52.     int             aio_fildes;
  53.     volatile void   *aio_buf;
  54.     size_t          aio_nbytes;
  55.     off_t           aio_offset;
  56.     int             aio_reqprio;
  57.     struct sigevent aio_sigevent;
  58.     int             aio_lio_opcode;
  59. };
  60.     struct sigevent{
  61.         int sigev_notify;   /*SIGEV_SIGNAL and SIGEV_NONE*/
  62.         int sigev_signo;
  63.         union sigval sigev_value;
  64.     }
  65.         union sigval{
  66.         int sival_int;
  67.         void *sival_ptr;  /* = &aiocb */
  68.         }
  69. int sigqueue(pid_t pid,int signo,const union sigval value);





發佈了31 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章