中断可以这样编程吗?
Can an interrupt be programmed like this?
我正在创建一个可以在后台生成程序的shell。当一个程序开始使用一定数量的内存时,比如100MB,我希望触发一个中断,导致一个函数运行。另一种方法是让一个进程保持运行并检查后台进程的状态。使用中断似乎使用更少的CPU资源。对吗?这可能吗?
我正在尝试在Linux中做这个
在Linux上这样做的一种方法是使用ptrace
。然后使用PTRACE_PEEKUSER查看子进程在进行系统调用时提供给内核的值。你会寻找像mmap和/或brk这样的东西。被调用的函数是在执行int 80时由EAX中的值定义的(对不起,我不知道每个mmap或brk的数字)。
当一个程序开始使用一定数量的内存时,比如100MB,我希望触发一个中断,使一个函数运行。
根据需要。如果捕获malloc调用足够,您可能会感兴趣:
- 教程:Linux中的函数插入,一个如何制作自己的malloc替代品的例子,这里是另一个相关教程:内部内存管理
- 为malloc创建一个包装函数,并在C - stackoverflow.com中释放,特别是malloc钩子 mtrace at GNU C Library.
如果您也想捕获brk(2) -(相关文章),您可能希望遵循一些跟踪解决方案
- ptrace ()
- pinktrace
或二进制仪器
- Valgrind
在Linux操作系统中,可以使用setrlimit
为进程设置资源限制。在您的情况下,可以使用RLIMIT_AS
或RLIMIT_DATA
。使用brk
的malloc
将在达到限制时失败。您可以监视malloc
返回的值,并自己引发一个信号。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 类成员和中断
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- C++编程从外部文本文件定义数组大小
- 了解算法的性能差异(如果以不同的编程语言实现)
- 我的代码运行良好,但在游戏循环中中断
- 使用 Gtkmm 以编程方式选择 Gtk::TextView 中的文本
- 使用带有MCP23017的 pigpio 进行中断读取
- 为什么我在 AVR 中的中断无法正常工作?
- 如何将可变参数模板转换为多个单个模板?(C++竞争编程调试模板)
- 使用 UDP 中断 while()-循环
- 有没有办法在Qt中以编程方式中断鼠标拖动
- 需要建议,以提高单词中断速度(动态编程)
- 编程语言捕获和处理的异常是否算作软件中断
- 中断可以这样编程吗?