Linux System Programming note 10 —— Signal
来源:互联网 发布:网络会员制营销意义 编辑:程序博客网 时间:2024/06/04 00:45
1. SIGKILL和SIGSTOP不能被忽略
2. Signal Identifiers
<signal.h>
3. Basic Signal Management
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t handler);
4. Waiting for a Signal, Any Signal
#include <unistd.h>
int pause(void);
5. Mapping Signal Numbers to Strings
extern const char * const sys_siglist[];
#include <signal.h>
void psignal(int signo, const char *msg);
#define _GNU_SOURCE
#include *strsignal(int signo);
6. Sending a Signal
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int signo);
7. Sending a Signal to Yourself
#include <signal.h>
int raise(int signo);
example:
raise(signo) equals to kill(getpid(), signo);
8. Sending a Signal to an Entire Process Group
#include <signal.h>
int killpg(int pgrp, int signo);
example:
killpg(pgrp, signo) equals to kill(-pgrp, signo);
9. Guaranteed-Reentrant Functions
10. Signal Sets
#include <signal.h>
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signo);
int sigdelset(sigset_t *set, int signo);
int sigismember(const sigset_t *set, int signo);
10. More Signal Set Functions
#define _GNU_SOURCE
#define <signal.h>
int sigisemptyset(sigset_t *set);
int sigorset(sig_set *dest, sigset_t *left, sigset_t *right);
int sigandset(sig_set *dest, sigset_t *left, sigset_t *right);
11. Blocking Signals
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
how:
SIG_SETMASK
SIG_BLOCK
SIG_UNBLOCK
12. Retrieving Pending Signals
#include <signal.h>
int sigpending(sigset_t *set);
13. Waiting for a Set of Signals
#include <signal.h>
int sigsuspend(const sigset_t *set);
14. Advanced Signal Management
#include <signal.h>
int sigaction(int signo, const struct sigaction *act,
struct sigaction *oldact);
struct sigaction{
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
typedef struct siginfo_t {
int si_signo;
int si_errno;
int si_code;
pid_t si_pid;
uid_t si_uid;
int si_status;
clock_t si_utime;
clock_t si_stime;
sigval_t si_value;
int si_int;
void *si_ptr;
void *si_addr;
int si_band;
int si_fd;
};
15. Sending a Signal with a Payload
#include <signal.h>
int sigqueue(pid_t pid,
int signo,
const union sigval value);
union sigval{
int sival_int;
void *sival_ptr;
};
0 0
- Linux System Programming note 10 —— Signal
- Linux System Programming note 2 ——File I/O
- Linux System Programming note 5—— Process Management
- Linux System Programming note 6—— Adcanced Process Management
- Linux System Programming note 7 —— Threading
- Linux System Programming note 9 ——Memory Management
- Linux System Programming note 11 ——Time
- Linux System Programming note 1
- Linux System Programming note 4 —— Advanced File I/O
- Linux System Programming note 8 ——File and Directory Management
- Linux signal events Learning note
- Linux System Programming note3 —— Buffered I/O
- 书评:Linux System Programming
- Linux system programming
- Linux System Programming -- Appendix
- system函数返回值问题(system的实现)—signal(SIGCHLD,SIG_DFL);signal(SIGNCHLD,S
- Nebula2探秘10-Signal System
- Nebula2探秘10-Signal System
- String to Integer (atoi)
- Sobel边缘检测算法
- PAT1011. A+B和C
- spring MongoDB 集成crud操作(简单封装)
- 计算机中那些事儿(二):如何神操作你的电脑
- Linux System Programming note 10 —— Signal
- 一个人笑
- 在windows 2003中修改默认网关、dns、增加静态路由
- linux 时间函数
- 单词翻转
- 写一个函数能够返回模块的帮助文档
- Linux环境编程之同步(一):互斥锁
- 修改oracle 的undo_retention
- NoSQL数据库的35个应用场景