signal

本文详细介绍了信号的基本概念,包括标准信号与实时信号的区别及应用,并深入探讨了信号的捕捉与响应过程。此外,还讨论了多种信号处理函数及其使用场景,如signal(), kill(), raise()等,并解释了信号集的操作。
 1 信号
 2 
 3 同步和异步
 4 
 5 异步:
 6     多进程+信号    (初步异步)
 7     多线程        (强烈异步)
 8 
 9 一、信号的基本概念
10     软件层面的中断
11     kill -l
12     <1>标准信号:1~31 不排队,丢失
13     <2>实时信号:34~64 排队,不丢失
14 
15 man 7 signal
16 
17 二、signal(2);
18     void (*signal)(int signum, void (*sighandler)(int))(int);
19 
20 三、异步事件的捕捉
21     <1>查询法
22     <2>通知法
23 
24 四、***信号的响应过程
25     为什么标准信号会丢失
26     标准信号如何做到忽略一个信号
27     为什么信号处理函数不能用longjmp()跳转
28     信号的响应是嵌套响应的
29 
30 五、
31     kill(2);
32     raise(3);进程中==kill(getpid(), signum);
33     sleep(3);不要将sleep(1);和alarm(1);混用
34     system(3);阻塞SIGCHLD 忽略SIGINT和SIGQUIT
35     alarm(2);
36     abort(3);
37     
38 六、信号集
39 
40     sigprocmask(2);
41 
42     sigpending(2);//得到进程pending位图
43     sigsuspend(2);        
44 
45     sigaction(2);--->signal();
46     setitimer(2);
47 
48     sigsetjmp(3);
49     siglongjmp(3);    
50 
51 
52 流控
53     漏桶
54     令牌桶
55         令牌
56         上限
57         速率

 

转载于:https://www.cnblogs.com/axjlxy/p/6724328.html

### SIGNAL语句的用法与语法 在SQL中,`SIGNAL`语句用于在存储过程、函数、触发器或事件中向调用者返回错误或警告条件。它提供了对返回值(如错误代码和消息)的精细控制。以下是其详细的语法和使用方法: #### 1. 基本语法 `SIGNAL`语句的基本语法如下: ```sql SIGNAL SQLSTATE 'value' SET MESSAGE_TEXT = 'message', MYSQL_ERRNO = error_code; ``` - `SQLSTATE 'value'`: 必须指定一个有效的SQLSTATE值,该值是一个五字符的字符串,表示特定的错误或警告条件[^1]。 - `MESSAGE_TEXT = 'message'`: 可选参数,用于定义错误消息的内容。 - `MYSQL_ERRNO = error_code`: 可选参数,用于定义错误编号。 #### 2. 示例代码 以下是一个简单的示例,展示如何在存储过程中使用`SIGNAL`语句抛出错误: ```sql DELIMITER $$ CREATE PROCEDURE example_procedure(IN input_value INT) BEGIN IF input_value < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Input value cannot be negative', MYSQL_ERRNO = 1643; -- 自定义错误编号 END IF; -- 其他逻辑 SELECT 'Value is valid'; END$$ DELIMITER ; ``` 在这个例子中,如果输入值为负数,则会触发一个用户定义的错误,停止执行并返回错误信息[^3]。 #### 3. 注意事项 - `SIGNAL`语句必须包含`SQLSTATE`值,这是强制性的[^2]。 - `RESIGNAL`语句与`SIGNAL`类似,但只能在错误或警告处理程序中使用。如果尝试在非处理程序上下文中使用`RESIGNAL`,则会收到错误消息:`RESIGNAL when handler is not active`[^2]。 - 在触发器中,可以结合`SIGNAL`语句实现条件检查。例如,当插入数据不满足某些条件时,可以通过`SIGNAL`语句阻止操作并返回自定义错误消息[^3]。 #### 4. 使用场景 - **存储过程中的错误处理**:通过`SIGNAL`语句,开发者可以在存储过程中主动抛出错误,从而中断执行流程并通知调用者。 - **触发器中的条件验证**:在触发器中,`SIGNAL`语句可用于验证插入或更新的数据是否符合特定规则。如果不满足条件,可以阻止操作并返回错误信息。 - **统一错误管理**:通过自定义`SQLSTATE`值和错误消息,可以实现跨数据库的一致性错误管理[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值