signal.h标准库提供的常用函数介绍及其用法详解

分类:知识百科 日期: 点击:0

signal.h是C/C++语言中的标准库,主要用于处理信号。它定义了一组函数,可以用于接收、发送和处理信号。

1、signal()函数

signal()函数是信号处理函数,用于捕获信号,并执行相应的操作。它的原型如下:

void (*signal(int sig, void (*func)(int)))(int);

它有两个参数:

  • sig:表示要捕获的信号,可以是SIGINT、SIGTERM、SIGKILL等。
  • func:表示要执行的操作,可以是SIG_IGN、SIG_DFL等。

使用示例:

#include 
#include 

void my_handler(int sig)
{
    printf("Received signal %d\n", sig);
}

int main()
{
    signal(SIGINT, my_handler);
    while (1);
    return 0;
}

2、raise()函数

raise()函数是发送信号函数,用于发送信号。它的原型如下:

int raise(int sig);

它只有一个参数:

  • sig:表示要发送的信号,可以是SIGINT、SIGTERM、SIGKILL等。

使用示例:

#include 
#include 

int main()
{
    raise(SIGINT);
    return 0;
}

3、kill()函数

kill()函数是发送信号函数,用于向指定的进程发送信号。它的原型如下:

int kill(pid_t pid, int sig);

它有两个参数:

  • pid:表示要发送信号的进程ID。
  • sig:表示要发送的信号,可以是SIGINT、SIGTERM、SIGKILL等。

使用示例:

#include 
#include 

int main()
{
    kill(12345, SIGINT);
    return 0;
}

4、sigaction()函数

sigaction()函数是信号处理函数,用于捕获信号,并执行相应的操作。它的原型如下:

int sigaction(int sig, const struct sigaction *act, struct sigaction *oact);

它有三个参数:

  • sig:表示要捕获的信号,可以是SIGINT、SIGTERM、SIGKILL等。
  • act:表示要执行的操作,可以是SIG_IGN、SIG_DFL等。
  • oact:表示保存旧的信号处理函数。

使用示例:

#include 
#include 

void my_handler(int sig)
{
    printf("Received signal %d\n", sig);
}

int main()
{
    struct sigaction act;
    act.sa_handler = my_handler;
    sigaction(SIGINT, &act, NULL);
    while (1);
    return 0;
}

5、sigprocmask()函数

sigprocmask()函数是信号屏蔽函数,用于设置进程的信号屏蔽字。它的原型如下:

int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);

它有三个参数:

  • how:表示设置信号屏蔽字的方式,可以是SIG_BLOCK、SIG_UNBLOCK、SIG_SETMASK等。
  • set:表示要设置的信号屏蔽字。
  • oldset:表示保存旧的信号屏蔽字。

使用示例:

#include 
#include 

int main()
{
    sigset_t set;
    sigemptyset(&set);
    sigaddset(&set, SIGINT);
    sigprocmask(SIG_BLOCK, &set, NULL);
    while (1);
    return 0;
}
标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。