Android C++系列:Linux信号(三)

可重入函数

在这里插入图片描述

  • 不含全局变量和静态变量是可重入函数的一个要素
  • 可重入函数见man 7 signal
  • 在信号捕捉函数里应使用可重入函数
  • 在信号捕捉函数里禁止调用不可重入函数

例如:strtok就是一个不可重入函数,因为strtok内部维护了一个内部静态指针,保存上一 次切割到的位置,如果信号的捕捉函数中也去调用strtok函数,则会造成切割字符串混乱, 应用strtok_r版本,r表示可重入。

信号引起的竞态和异步I/O

时序竞态

  • int pause(void)

    • 使调用进程挂起,直到有信号递达,如果递达信号是忽略,则继续挂起
  • int sigsuspend(const sigset_t *mask)

    • 以通过指定mask来临时解除对某个信号的屏蔽,
    • 然后挂起等待,
    • 当被信号唤醒sigsuspend返回时,进程的信号屏蔽字恢复为原来的值

mysleep实现,这种实现方式是否存在BUG?

#include <unistd.h> 
#include <signal.h> 
#include <stdio.h>
void sig_alrm(int signo) {
	/* nothing to do */ 
}
unsigned int

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 04:46:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 04:46:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 04:46:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 04:46:03       55 阅读

热门阅读

  1. 3507软件IIC,IO输入输出函数

    2024-07-20 04:46:03       15 阅读
  2. Elasticsearch扩容与缩容集群

    2024-07-20 04:46:03       18 阅读
  3. 三、模型转换和压缩扩写

    2024-07-20 04:46:03       15 阅读
  4. python实现动态规划算法

    2024-07-20 04:46:03       19 阅读
  5. 分布式锁的最佳实践之Redisson

    2024-07-20 04:46:03       19 阅读
  6. [沫忘录]Golang基础类型与语法

    2024-07-20 04:46:03       19 阅读
  7. python需要掌握那些语法

    2024-07-20 04:46:03       17 阅读
  8. 关于shell的变量替换

    2024-07-20 04:46:03       18 阅读
  9. JVM--内存分配与回收策略

    2024-07-20 04:46:03       17 阅读
  10. autosar mcal I2C

    2024-07-20 04:46:03       16 阅读
  11. 关于防重,我是这么设计的

    2024-07-20 04:46:03       15 阅读
  12. python实现计数排序、桶排序和基数排序算法

    2024-07-20 04:46:03       14 阅读
  13. Carousel of Combinations

    2024-07-20 04:46:03       16 阅读