信号相关函数 | 小牛学习日记
信号相关函数
Published in:2025-02-23 | category: C++
Words: 604 | Reading time: 2min | reading:

信号相关部分函数

信号发送函数

kill

向指定进程发送信号。

1
2
#include <signal.h>
int kill(pid_t pid, int sig);

pid:目标进程ID。pid > 0 发送给指定进程;pid == 0 发送给同一进程组的所有进程;pid == -1 发送给有权限的所有进程;pid < -1 发送给进程组ID为 -pid 的所有进程。

sig:要发送的信号。

返回值:成功返回0,失败返回-1并设置 errno。

raise

向当前进程发送信号。

1
2
#include <signal.h>
int raise(int sig);

sig:要发送的信号。

返回值:成功返回0,失败返回非0。

abort

使当前进程异常终止。

1
2
#include <stdlib.h>
void abort(void);

无返回值

定时器函数

alarm

设置一个定时器,在指定时间后发送 SIGALRM 信号。

1
2
#include <unistd.h>
unsigned int alarm(unsigned int seconds);

seconds:定时器时间(秒)。

返回值:返回之前定时器的剩余时间。

self timer

设置和管理定时器。

1
2
#include <sys/time.h>
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

which:定时器类型(ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF)。

new_value:新定时器值。

old_value:旧定时器值。

返回值:成功返回0,失败返回-1。

信号处理函数

signal

设置信号处理函数。

1
2
#include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);

sig:信号编号。

func:信号处理函数。

返回值:返回之前的信号处理函数。

sigaction

设置信号处理行为。

1
2
#include <signal.h>
int sigaction(int sig, const struct sigaction *act, struct sigaction *oldact);

sig:信号编号。

act:新信号处理行为。

oldact:旧信号处理行为。

返回值:成功返回0,失败返回-1。

信号集操作函数

操作信号集。

信号集(Signal Set)是一个用于表示一组信号的数据结构,通常用于在进程中对多个信号进行批量操作。

1
2
3
4
5
6
#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);

set:信号集。

signo:信号编号。

返回值:sigemptyset, sigfillset, sigaddset, sigdelset 成功返回0,失败返回-1;sigismember 返回1(是成员)或0(不是成员)。

sigprocmask

设置或修改进程的信号屏蔽字。

1
2
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);

how:操作类型(SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK)。

set:新信号集。

oldset:旧信号集。

返回值:成功返回0,失败返回-1。

Next:
守护进程
Prev:
孤儿进程和僵尸进程