AFL setup_signal_handlers

2024-03-07 15:52
文章标签 signal setup afl handlers

本文主要是介绍AFL setup_signal_handlers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不太理解sigaction及其中字段的含义和用法:

static void setup_signal_handlers(void) {struct sigaction sa; // 定义一个sigaction结构体变量sa// 初始化sa结构体sa.sa_handler   = NULL; // 默认的信号处理函数设置为NULLsa.sa_flags     = SA_RESTART; // 设置标志为SA_RESTART,使被信号打断的系统调用自动重启sa.sa_sigaction = NULL; // 复杂信号处理函数设置为NULLsigemptyset(&sa.sa_mask); // 初始化信号集为empty,即不阻塞任何信号/* Various ways of saying "stop". */// 设置处理"停止"信号的处理函数sa.sa_handler = handle_stop_sig; // handle_stop_sig是一个函数,用于处理SIGHUP, SIGINT, SIGTERM这些信号sigaction(SIGHUP, &sa, NULL); // 当收到挂起信号时调用handle_stop_sigsigaction(SIGINT, &sa, NULL);  // 当收到中断信号时调用handle_stop_sigsigaction(SIGTERM, &sa, NULL); // 当收到终止信号时调用handle_stop_sig/* Exec timeout notifications. */// 设置处理超时通知的处理函数sa.sa_handler = handle_timeout; // handle_timeout是一个函数,用于处理SIGALRM信号sigaction(SIGALRM, &sa, NULL); // 当收到定时器到期信号时调用handle_timeout
}

先去了解下,有没有描述的清楚的中文博客。
感觉大部分博客都描述的差不多,还是不太理解。
需要再往前追溯下,什么是Linux中的信号?

看了这篇博客:https://blog.csdn.net/qq_45358642/article/details/129758736,
简单总结下,信号可以进程、线程、甚至用户(kill)主动发出的,进程可以通过注册信号处理函数来接收信号并处理,大概就是这么个意思。

下面这段代码:

  sa.sa_handler = handle_stop_sig; // handle_stop_sig是一个函数,用于处理SIGHUP, SIGINT, SIGTERM这些信号sigaction(SIGHUP, &sa, NULL); // 当收到挂起信号时调用handle_stop_sigsigaction(SIGINT, &sa, NULL);  // 当收到中断信号时调用handle_stop_sigsigaction(SIGTERM, &sa, NULL); // 当收到终止信号时调用handle_stop_sig

如果收到了SIGHUP, SIGINT, SIGTERM这3个信号,那么就调用handle_stop_sig处理,后面handle_timeout也是类似的。

暂时就理解这么多,大概知道用法就行。

这篇关于AFL setup_signal_handlers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784040

相关文章

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

2024年 Biomedical Signal Processing and Control 期刊投稿经验最新分享

期刊介绍 《Biomedical Signal Processing and Control 》期刊旨在为临床医学和生物科学中信号和图像的测量和分析研究提供一个跨学科的国际论坛。重点放在处理在临床诊断,患者监测和管理中使用的方法和设备的实际,应用为主导的研究的贡献。 生物医学信号处理和控制反映了这些方法在工程和临床科学的界面上被使用和发展的主要领域。期刊的范围包括相关的评论论文(review p

【HDU】5958 New Signal Decomposition【离散对数下的FFT】

题目链接:【HDU】5958 New Signal Decomposition 在此先感谢小q对我的指导,没有q老师的帮助,估计永远也做不出来了。 首先我们考虑对这个式子做离散对数。令 g g为pp的某个原根,则有: bi=∑p−1j=0aj⋅r(i,j) \quad b_i=\sum_{j=0}^{p-1}a_j\cdot r(i,j) bi=∑p−1j=0aj⋅2sin32πi⋅j

vc++ 2008 Redistributable Setup Error 1935.An error occurred during the ...

如标题提示一般是因为.net 3.5 无法安装造成的。需要安装 .net后就可以正常安装。.net 安装需要开启windows update 服务要不然安装失败。 如果windows update 界面显示为空,或者下载失败。则是服务未开启,开启就行。 保证上图两个服务开启 .net 就可以正常安装。vs 2008 组件也就可以正常安装。

Java Lock 中使用 await() 和 signal()实现 wait()/notify()机制

** Java Lock 中使用 await() 和 signal()实现 wait()/notify()机制 ** 案例 import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;

【Get深一度】Win10 Setup will now quit. 系统管理员失去安装和移除软件的权利(求助帖)

1.问题详述 笔者在安装软件的时候无意在任务管理器中叉掉了一个进程,然后 ,悲剧了。。莫名其妙就失去了权限。  2.以安装mathtype为例 没到最后都会弹出一个Setup :  问题手打一遍:You do not appear to have the rights required to install or remove s

Fourier TransformHilbert TransformRelated Function's MATLAB Simulation in Signal Processing

Fourier Transform:对于平稳信号有着明确的物理意义,频域反应各频率成分,可用于滤除高频噪声分量Hilbert  Transform:平稳信号分析,在信号分析和贷通信号中,理论和实用价值,SSB Walsh-Hadamand Transform:基于非正弦正交基的信号变换 ---First Of ALL---在数学与

synchronized wait()/notify 对比 ReentrantLock await()/signal()

结论 synchronized synchronized 配合 wait()/notify 无法实现精准唤醒线程 ReentrantLock ReentrantLock 配合 Condition await()/signal() 可以实现精准唤醒线程 (指唤醒指定的线程) ReentrantLock 如何实现精准唤醒线程 一个 lock 配合多个 Condition, 且

signal(SIGPIPE, SIG_IGN)详解

SIG_DFL,SIG_IGN  分别表示无返回值的函数指针,指针值分别是0和1,这两个指针值逻辑上讲是实际程序中不可能出现的函数地址值。 SIG_DFL: 默认信号处理程序 SIG_IGN: 忽略信号的处理程序 IGPIPE 一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程. 结合TCP的"四次握手"关闭. TCP是全双工

vue3 + vite + setup语法糖使用minIO上传文件

前言:需要使用minio-js插件,原生minio使用vue2框架 npm i minio-js 源码: minio的部署可参考Windows部署MinIO,搭建本地对象存储服务_minio windows部署-CSDN博客 注意初始化与作为参数中的 bucketName 需要一致,部署本地minio后需要创建bucket <script setup>import { ElMessa