当前位置: 首页 > news >正文

wordpress图片存南京seo培训

wordpress图片存,南京seo培训,无极网站维护,做问卷不花钱的网站1. 信号概念 信号是操作系统用来通知进程某个特定事件已经发生的一种方式。它们是一种软件中断,可以被发送到进程以对其进行异步通知。 2. 信号处理的三种方式 执行默认动作执行自定义动作忽略 signal() 函数:将信号处理设置为 SIG_IGN,可…

1. 信号概念

信号是操作系统用来通知进程某个特定事件已经发生的一种方式。它们是一种软件中断,可以被发送到进程以对其进行异步通知。

2. 信号处理的三种方式

  1. 执行默认动作
  2. 执行自定义动作
  3. 忽略

signal() 函数:将信号处理设置为 SIG_IGN,可以忽略信号

signal(sig, SIG_IGN);

sigaction() 函数:将 sa_handler 设置为 SIG_IGN

struct sigaction act;
act.sa_handler = SIG_IGN;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
sigaction(sig, &act, NULL);

3. 系统定义的信号列表

131表示为常规信号,3264表示为实时信号

常规信号不需要排队,实时信号需要排队。

如果一个常规信号在短时间内多次产生,而进程正在处理前一个该信号,那么后续的相同信号通常会被丢弃,只保证至少有一个信号被传递给进程。

如果有多个相同的实时信号发送给一个进程,它们会被排队,直到进程有机会处理它们。这意味着进程可以按顺序处理所有接收到的实时信号,不会丢失任何信号。

信号编号信号名词信号用途
1SIGHUP通常在控制终端关闭时发送给前台进程组的所有进程,用于提示程序重新读取配置文件或优雅地重启
2SIGINT由用户发送,通常通过按下 Ctrl+C,请求程序中断当前操作
3SIGQUIT由用户发送,通常通过按下 Ctrl+\,请求程序停止并产生核心转储,用于调试
4SIGILL当程序尝试执行非法指令时发送,指示程序存在严重错误
5SIGTRAP由断点指令或trace调用触发,用于调试
6SIGABRTabort() 函数调用触发,请求程序异常终止并产生核心转储
7SIGBUS当程序试图访问一个无法访问的内存地址时发送,指示总线错误
8SIGFPE浮点异常信号,如算术溢出、除以零等
9SIGKILL用于立即终止进程,无法被捕获或忽略
10SIGUSR1用户自定义信号,可以用于进程间通信
11SIGSEGV段错误信号,当程序试图访问其内存空间中未分配或无法访问的内存时发送
12SIGUSR2用户自定义信号,可以用于进程间通信
13SIGPIPE当写入一个已被另一端关闭的管道时发送
14SIGALRM计时器信号,由 alarm() 函数设置的计时器超时触发
15SIGTERM终止信号,请求进程自行终止,是最常用的终止信号
16SIGSTKFLT协处理器栈故障,不常用
17SIGCHLD子进程结束或停止信号,用于通知父进程子进程的状态改变
18SIGCONT继续信号,用于将一个被停止的进程恢复执行
19SIGSTOP停止信号,用于暂停进程的执行,无法被捕获或忽略
20SIGTSTP用户停止信号,通常由用户通过 Ctrl+Z 触发
21SIGTTIN后台进程组试图从前台进程组控制的终端读取
22SIGTTOU后台进程组试图向前台进程组控制的终端写入
23SIGURG有紧急数据可读,通常用于网络编程
24SIGXCPUCPU时间限制超信号,当进程超过其CPU时间限制时发送
25SIGXFSZ文件大小限制超信号,当进程试图扩大超过其文件大小限制的文件时发送
26SIGVTALRM虚拟时钟超时信号,类似于 SIGALRM,但是计算的是进程占用 CPU 的时间
27SIGPROF性能分析信号,用于性能分析和监视
28SIGWINCH窗口变化信号,当终端的窗口大小发生变化时发送
29SIGIO输入/输出可用信号,用于异步I/O
30SIGPWR电源恢复信号,用于通知设备电源状态变化
31SIGSYS坏系统调用信号,当执行了无法识别的系统调用时发送

4. 信号的产生

4.1 通过终端按键产生信号

当用户在终端按键时(如 Ctrl+C 或 Ctrl+Z),终端驱动程序会捕捉到这个按键事件,并将其转换为相应的信号。

4.2 调用系统函向进程发信号

kill函数可以给一个指定的进程发送指定的信号

int kill(pid_t pid, int signo);//成功返回0,错误返回-1

raise函数可以给当前进程发送指定的信号(自己给自己发信号)

int raise(int signo);//成功返回0,错误返回-1

abort函数使当前进程接收到信号而异常终止

void abort(void);//abort函数总是会成功的,所以没有返回值

4.3 由软件条件产生信号

常见的软件条件:

  • 异常(SIGFPE、SIGSEGV)
  • 主动终止(SIGABRT)
  • 调试信息(SIGTRAP)
  • 自定义行为(SIGUSR1、SIGUSR2)

信号的生成和处理:

使用系统调用

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>int main() {// 主动触发 SIGABRT 信号abort();return 0;
}

捕捉和处理

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>void handle_sigint(int sig) {printf("Caught signal %d\n", sig);exit(0);
}int main() {signal(SIGINT, handle_sigint); // 捕获 Ctrl+Cwhile (1) {printf("Running...\n");sleep(1);}return 0;
}

4.4 硬件异常产生信号

在 Linux 中,硬件异常是指由计算机硬件引发的事件,这些事件通常会导致当前执行的程序无法继续正常运行。

硬件异常的常见问题:

非法指令:程序尝试执行未定义或不合法的指令

段错误:程序访问了未分配给它的内存区域

浮点异常:发生除以零、溢出等浮点运算错误

总线错误:由于对未对齐地址或无效地址进行访问而导致的错误

例如:

int main() {int *ptr = NULL;*ptr = 42; // 尝试写入 NULL 指针return 0;}

在这种情况下,CPU 检测到非法内存访问并生成 SIGSEGV 信号。操作系统捕获该信号并终止该进程,同时可能生成核心转储文件用于后续调试。

http://www.zhongyajixie.com/news/45984.html

相关文章:

  • 2023重大新闻事件10条专业的网站优化公司
  • 惠州网站建设电话甘肃新站优化
  • 天津网站建设公司推荐培训机构管理系统哪个好
  • 安卓盒子 做网站app推广渠道在哪接的单子
  • ps怎样做网站大图2022年最火的关键词
  • ASP做旅游网站代码2022最新国际新闻10条简短
  • 电子工程师网站外贸推广如何做
  • 致设计seo如何优化关键词上首页
  • 用vs session做网站杭州seo排名收费
  • 交友网站怎样做百度网站搜索排名
  • 凡科互动游戏修改速度怎么网站排名seo
  • 江苏徐州网站建设百度本地惠生活推广
  • ...无锡网站制作谷歌google搜索引擎入口
  • 品牌官方网站建设需要什么石家庄seo公司
  • 移动网站建设学习泰州seo平台
  • 做网站为什么先交定金广州线下教学
  • wordpress dux5.1冯耀宗seo课程
  • 苏州吴中区做网站网上的推广公司
  • 石家庄网站建设刘华青岛网络工程优化
  • 朝阳网站制作公司搜索排名影响因素
  • 网站的论坛怎么做品牌推广网络公司
  • php网站搭建教程广州最新疫情最新消息
  • 用什么软件做动漫视频网站seo赚钱方式
  • 手机网站的建设培训班报名
  • 做服装必须看的十大网站引擎优化seo是什么
  • 0311网站建设百度首页纯净版
  • 网站 审批号百度seo排名培训优化
  • 建设企业网站的人员组成深圳营销推广引流公司
  • 外贸网站建设收款通道百度一下官网页
  • 公务员写作材料网站烟台seo快速排名