signal-handling相关内容
我刚刚开始在 django 项目中实现信号监听器.虽然我了解它们是什么以及如何使用它们.我很难弄清楚我应该把它们放在哪里.来自 django 网站的文档是这样说的: 这段代码应该放在哪里? 你可以把信号处理和您喜欢的任何地方的注册码.但是,您需要确保它所在的模块会提前导入on 以便信号处理得到在任何信号需要之前注册被发送.这使您的应用程序的models.py 是一个放置的好地方信号处理
..
程序: #include无效的主要(){国际时间=1800;而(1){系统(“清除");时间-=1;printf("%d\n",time);睡眠(1);如果(时间==0)暂停();}} 当时间到达0时,上面的程序停止.我的要求是在程序运行期间,如果我按空格键或任何其他键,程序会暂停,再次按下键,程序会得到恢复.所以为了做到这一点,在执行之前while 条件下,我们提交键盘中断
..
我想知道是否有办法对 Linux 中的每个页面进行写保护进程的地址空间(从进程本身内部,通过mprotect()).我所说的“每一页"是指每一页普通进程可能写入的进程地址空间在用户模式下运行的程序——所以,程序文本,常量,全局变量和堆——但我会对常量感到满意,全局变量和堆.我不想写保护堆栈——那个似乎是个坏主意. 一个问题是我不知道从哪里开始写保护记忆.查看 /proc/pid/maps,它
..
我刚刚开始在 Django 项目中实现信号监听器.虽然我了解它们是什么以及如何使用它们.我很难弄清楚我应该把它们放在哪里.来自 django 站点的文档是这样说的: 这段代码应该放在哪里? 你可以把信号处理和您喜欢的任何地方的注册码.但是,您需要确保它所在的模块提前导入以便信号处理得到在任何信号需要之前注册被发送.这使您的应用程序的models.py 一个放置的好地方注册信号处理程序.
..
我想编写一个信号处理程序来捕获 SIGSEGV.我使用 保护一块内存以供读或写 char *buffer;字符 *p;字符一个;int pagesize = 4096;mprotect(缓冲区,页面大小,PROT_NONE) 这可以保护从缓冲区开始的 pagesize 字节内存免受任何读取或写入. 其次,我尝试读取内存: p = 缓冲区;a = *p 这将生成一个 SIGSEGV,
..
我正在尝试创建一个 x86_64 汇编程序,该程序在发送 SIGTERM 信号时显示“收到 SIGTERM".我的应用程序直接使用 Linux 系统调用: %define sys_write 0x01%define sys_rt_sigaction 0x0d%define sys_pause 0x22%define sys_exit 0x3c%define SIGTERM 0x0f%定义标准输出
..
假设我有以下程序: #include#include#include静态void myHandler(int sig){abort();}int main(void){信号(SIGSEGV,myHandler);char * ptr = NULL;* ptr ='a';返回0;} 如您所见,我注册了一个信号处理程序,并进一步
..
我已经使用信号处理程序来处理 SIGTERM 和 SIGINT 信号.当grpc服务器启动并运行时,我发出 sudo kill -15 [PID] 命令,但看不到正常的关机日志报告,并且得到: [1] 41983已终止,请运行mypkg/main.go 现在,当我使用netstat时,它报告端口号50051已打开,并且由于端口号繁忙而无法运行服务器. 我做了什么: func ma
..
我开发了一个Java工具,它具有许多JNI功能,经常使JNI崩溃.是否有可能避免这些崩溃或将这些崩溃作为异常捕获.我上网冲浪,发现可以通过信号处理,信号调整,sigaction()等来实现.但是我找不到可靠的消息来源来指导我.请确实指导我. 解决方案 JNI异常被视为信号.您可以通过sigaction设置信号处理程序,然后尝试释放崩溃堆栈,例如通过示例: int watched_si
..
首先,在准备好读取数据时,我很难让串行设备生成SIGIO. 我正在尝试编写一个简单的串行接口,以使用USB到串行适配器与微型计算机通信.我想将此接口保持与在微型接口(中断驱动,使用回调)中找到的接口相似,因此我决定采用捕获SIGIO信号的方式,而不是使用单独的线程或恒定的非阻塞串行方式读.这是我的初始化代码(在各种异步串行教程中,大多数代码看起来都很熟悉): int mcs = TIO
..
我正在编写一个虚拟外壳程序,该外壳程序在用户键入ctrl-C时不应终止,而应仅生成一个新的提示行.当前,当我键入ctrl-C时,我的外壳并没有终止,但是它仍然不打印新的提示行.您知道为什么会这样吗,我该如何解决? 我的代码如下: #include #include #include #include #
..
在下面的代码中,类Process可以在异步模式下使用boost process运行一个进程,如果超时则可以终止该进程.现在,为了关闭它,我阻塞了所有线程中的所有信号,并创建了一个特定的线程signal_thread来处理信号.在执行此操作时,程序将停止工作.我想这可能是因为父进程无法再接收信号SIGCHLD并知道子进程已完成执行. #include #include
..
我一直在寻找一种方法来停止每2秒执行一次任务的线程.我决定尝试使用std :: promise/future,以便在设置promise时线程可以立即退出. #include #include #include #include std::promise stop; int main() {
..
我有一个启动多个线程的应用程序. 我正在使用信号处理程序来捕获信号. 我不希望我的应用程序在SIGSEGV上退出;我只想终止引起信号的线程,并在其他线程中继续整个应用程序的流程. 有可能吗? 解决方案 如果发生SIGSEGV,则表明您的程序已调用未定义的行为,即整个程序的状态为未定义/不确定/无效.实际上,您可能可以恢复并继续运行,但是不能保证,这很危险. 正如asveikau
..
我想用perl编写一个健壮的守护程序,该守护程序将在Linux上运行并遵循在这种情况下,我有以下问题: 我应该在哪里定义我的信号处理程序.我应该在父级(守护程序)中定义它们,并假定它们将在子级中继承吗? 如果我运行exec('handle_event.pl'),这些处理程序是否将在exec上继承(我知道它们是在fork上继承的)? 如果我在handle_event.pl中重新定义一个新的
..
我正在研究一个从套接字接收数据的程序,并且当发送信号时,我希望能够从接收中断. 我现在所拥有的: class Killer: die = False def __init__(self): signal.signal(signal.SIGINT, self.terminate) signal.signal(signal.SIGTERM,
..
以下是我想在运行"Red Hat Enterprise Linux 5.5(Tikanga)内核2.6.18-194.el5xen x86_64" OS的计算机上使用的源示例. 一般的想法是我想要某个线程的回溯,因此我正在为该线程引发SIGUSR1信号,并且处理程序进行backtrace()调用. 在以下情况下,FrameTwo函数在循环中调用malloc和free.每当为此特定线程发
..
我目前正在使用信号编写程序,但遇到了这个麻烦: 如何在不发送SIGSTOP/SIGCONT的情况下将执行程序的状态更改为已停止/正在运行? 我了解,我需要使用: void add_to_runqueue (struct task_struct * p) 和 void del_from_runqueue (struct task_struct * p) 但是如何获取
..
我正在使用Term :: ReadLine :: Gnu并遇到信号处理问题.给定以下脚本并向该脚本发送了TERM信号,直到之后按下回车键,才触发TERM信号的处理程序.使用Term :: ReadLine:Perl不会发生这种情况. 我已经读过Term :: ReadLine :: Gnu有自己的内部信号处理程序,但是坦率地说,我对如何使用它们感到困惑. 我已经查看了 http://s
..
我目前正在用C ++编写一个小型shell. 作业和与之关联的PID存储在作业指针(job *)的队列中.运行新作业时,有关该作业的信息将添加到队列中.由于可以同时处理多个作业,并且可以随时在Shell控制台中输入新作业,因此我有一个信号处理程序来等待终止的作业. 作业终止时,我需要从活动作业队列中删除其信息,然后将其移至终止作业的双端队列.但是,有可能在另一个作业停止时将用户的新作业
..