Naetw / Naetw.github.io

https://naetw.github.io
1 stars 0 forks source link

Network Programming Hw Note #4

Closed Naetw closed 5 years ago

Naetw commented 6 years ago

Hw1

sigaction()

語法:int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

是個系統呼叫,用來改變 process 在收到特定 signal 後所採取的行為,被 included 在 signal.h

sigaction 的結構定義如下:

struct sigaction {
  void     (*sa_handler)(int);
  void     (*sa_sigaction)(int, siginfo_t *, void *);
  sigset_t   sa_mask;
  int        sa_flags;
  void     (*sa_restorer)(void);
};

sa_handler 用以指定需要採取的行為,可以是 SIG_DFLSIG_IGN 或是 a pointer to a function taking an int as an agrument and returning void,參數 int 代表的是要處理的 signum

由 Kernel 決定要做什麼行為。

sa_flags 指定 a set of flags 來調整 signal 的表現行為

舉例來說,當 signumSIGCHLD 時,設定 SA_NOCLDWAIT 會讓 subprocess 不會有轉變成 zombie process 的行為。