Closed Naetw closed 5 years ago
sigaction()
語法:int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
是個系統呼叫,用來改變 process 在收到特定 signal 後所採取的行為,被 included 在 signal.h。
signal.h
signum
SIGKILL
SIGSTOP
act
oldact
sigaction 的結構定義如下:
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_DFL、SIG_IGN 或是 a pointer to a function taking an int as an agrument and returning void,參數 int 代表的是要處理的 signum。
sa_handler
SIG_DFL
SIG_IGN
int
由 Kernel 決定要做什麼行為。
sa_flags 指定 a set of flags 來調整 signal 的表現行為
sa_flags
舉例來說,當 signum 為 SIGCHLD 時,設定 SA_NOCLDWAIT 會讓 subprocess 不會有轉變成 zombie process 的行為。
SIGCHLD
SA_NOCLDWAIT
Hw1
sigaction()
是個系統呼叫,用來改變 process 在收到特定 signal 後所採取的行為,被 included 在
signal.h
。signum
可以是除了SIGKILL
&SIGSTOP
以外的 signals。act
用來設定新的行為,oldact
則用來紀錄之前的行為設定。sigaction
的結構定義如下:sa_handler
用以指定需要採取的行為,可以是SIG_DFL
、SIG_IGN
或是 a pointer to a function taking an int as an agrument and returning void,參數int
代表的是要處理的signum
。SIG_DFL
- signal-specific default action由 Kernel 決定要做什麼行為。
SIG_IGN
- ignore signalsa_flags
指定 a set of flags 來調整 signal 的表現行為舉例來說,當
signum
為SIGCHLD
時,設定SA_NOCLDWAIT
會讓 subprocess 不會有轉變成 zombie process 的行為。