Questions tagged «signal-handling»

7
django项目中的信号处理程序应该放在哪里?
我刚刚开始在django项目中实现信号监听器。虽然我了解它们是什么以及如何使用它们。我很难弄清楚我应该把它们放在哪里。django网站上的文档说: 该代码应该放在哪里? 您可以将信号处理和注册代码放在您喜欢的任何位置。但是,您需要确保该模块所在的模块尽早导入,以便在需要发送任何信号之前注册信号处理。这使您的应用程序的models.py成为注册信号处理程序的好地方。 尽管这是一个很好的建议,但是在我的models.py中包含非模型类或方法只会给我带来错误的印象。 那么,存储和注册信号处理程序的最佳实践/规则是什么?


5
如何编写信号处理程序以捕捉SIGSEGV?
我想编写一个信号处理程序来捕捉SIGSEGV。我保护一块内存以供使用 char *buffer; char *p; char a; int pagesize = 4096; mprotect(buffer,pagesize,PROT_NONE) 这样可以保护从缓冲区开始的内存的页面大小字节免受任何读取或写入的影响。 其次,我尝试读取内存: p = buffer; a = *p 这将生成一个SIGSEGV,并且将调用我的处理程序。到现在为止还挺好。我的问题是,调用处理程序后,我想通过以下方式更改内存的访问写入: mprotect(buffer,pagesize,PROT_READ); 并继续正常运行我的代码。我不想退出该功能。在将来对同一内存进行写操作时,我想再次捕获该信号并修改写权限,然后记录该事件。 这是代码: #include <signal.h> #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <errno.h> #include <sys/mman.h> #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) char *buffer; int flag=0; …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.