草庐IT

hook_event_proc

全部标签

linux - perf_event_open 溢出信号

我想计算(或多或少)一段代码的确切指令数量。此外,我希望在通过特定数量的指令后收到信号。为此,我使用了由perf_event_open.我正在使用联机帮助页建议的第二种方式来实现溢出信号:SignaloverflowEventscanbesettodeliverasignalwhenathresholdiscrossed.Thesignalhandlerissetupusingthepoll(2),select(2),epoll(2)andfcntl(2),systemcalls.[...]TheotherwayisbyuseofthePERF_EVENT_IOC_REFRESHioc

linux - linux下X上的系统范围键盘 Hook

在Linux(X-windows)上安装键盘Hook以便在按下某些组合键时触发某些应用程序的最佳方法是什么?无论哪个窗口管理器正在运行,有没有办法做到这一点?这个想法是在按下某个键时调用(或置于前台)应用程序,其方式类似于GoogleDesktop对Ctrl-Ctrl的操作。 最佳答案 根窗口上的XGrabKey是xbindkey的工作方式。但是要小心使用其他方法来终止抓取,不得不去某个地方ssh进入你自己的盒子只是为了终止那个进程是非常烦人的......这就是为什么,如果是我的话,xbindkeys+"echo'moo'>/tmp

php - 如何获得 proc_open() 的输出

我试图从php中的proc_open方法获取输出,但是,当我打印它时,我得到的是空的。$descriptorspec=array(0=>array("pipe","r"),1=>array("pipe","w"),2=>array("file","files/temp/error-output.txt","a"));$process=proc_open("time./aa.out",$descriptorspec,$pipes,$cwd);只要我知道,我就可以用stream_get_contents()获取输出echostream_get_contents($pipes[1]);fcl

c - mmap on/proc/pid/mem

有没有人成功地用Linux内核2.6映射/proc/pid/mem文件?我收到ENODEV(无此类设备)错误。我的电话看起来像这样:char*map=mmap(NULL,PAGE_SIZE,PROT_READ,MAP_SHARED,mem_fd,offset);而且我在调试时通过查看/proc/pid/maps文件进行了验证,当执行到此调用时,offset的值为堆栈顶部减去PAGE_SIZE。我还使用ptrace验证了mmap将errno设置为ENODEV。 最佳答案 参见proc_mem_operationsin/usr/src/

linux - grep:/proc/sysrq-trigger: 输入/输出错误

我正在搜索文件系统并使用grep。我看到一切正常,直到出现此错误:Grep:/proc/sysrq-trigger:Input/outputerror我在网上的不同地方找到了其他人遇到过同样问题的信息,但没有任何地方真的有效。我尝试了2>/dev/null来抑制错误,但没有“跳过文件”,这正是我希望它能做的。相反,它只是停止进程(这是一个使用grep的查找/sed进程)。我认为有一种方法可以使用grep指定要排除的文件,但我希望可能有更强大、更优雅的解决方案。 最佳答案 听起来好像您正在递归搜索整个文件系统层次结构。这在大多数系统上

linux - 从 ptraced 进程读取/proc/pid/mem 返回 EOF

上下文我一直在为我的期末作业编写一个程序,我发现了以下奇怪的行为。我编写了一个跟踪程序,以便能够从子进程读取/写入内存。我的目的是在给定点读取当前执行的指令,然后反汇编它以获得有关内存操作数等的一些信息。出于测试目的,使用了一个用C语言编写的简单HelloWorld。信息我编写的跟踪器代码是这样的:size_ttracer::readMem(ADDR_toffset,char*buff,size_tlen){REQUIRE(_state!=TRCS_UNINITIALISED);if(_memsdescr控制执行的代码如下。基本上它所做的就是从/proc/mem中读取15个字节的blo

c++ - Linux C++ : apis vs/proc files?

我正在开发一个应用程序来收集和发送各种系统信息(分区空间/可用空间、笔记本电脑电池信息等)。我以直接C++API的形式获取这些信息并没有取得多大成功。尽管它都可以通过/proc(或类似)中的文件获得。所以-我想知道在我的C++应用程序中读取/解析这些文件是否是获取此信息的适当方式,还是我应该继续尝试发现API?(注意:我正在使用statvfs)。到目前为止,在Win32中收集此类信息似乎更容易。看起来很奇怪。 最佳答案 到目前为止最好的做法是按照以下优先顺序坚持使用API。您的语言API(在这里对您没有太大帮助,但对于字符串来说,C

c - 使用 struct epoll_event 处理内存

我正在使用epolllibrary用C语言开发服务器我有一个关于如何为structepoll_event处理内存的问题。我在一些在线示例中注意到,当进行epoll_ctl调用时,events参数在堆栈上分配,然后传递指针,如下所示:structepoll_eventev;ev.events=EPOLLIN;epoll_ctl(epfd,EPOLL_CTL_ADD,sockfd,&ev);现在我们都知道函数返回时ev会发生什么。我的问题是:epoll库是在内部复制这些值还是依赖于您传递给堆分配的结构?上面的例子会完全破坏我的react器实现吗?如果是这样,跟踪我的堆分配epoll_eve

linux - 如何理解 "/proc/[pid]/stack"?

根据proc手册:/proc/[pid]/stack(sinceLinux2.6.29)Thisfileprovidesasymbolictraceofthefunctioncallsinthisprocess'skernelstack.ThisfileisprovidedonlyifthekernelwasbuiltwiththeCONFIG_STACKTRACEconfigurationoption.所以我写了一个程序来测试:#include#include#include#includevoid*thread_func(void*p_arg){pid_tpid=fork();if

当我有正确的能力时无法打开/proc/self/oom_score_adj

我正在尝试为进程设置OOMkiller得分调整,灵感来自oom_adjust_setupinOpenSSH'sport_linux.c.为此,我打开/proc/self/oom_score_adj,读取旧值,然后写入新值。显然,我的进程需要是root或具有CAP_SYS_RESOURCE的能力才能做到这一点。我得到了一个我无法解释的结果。当我的进程没有能力时,我可以打开该文件并读取和写入值,尽管我写入的值没有生效(足够公平):$./a.outCAP_SYS_RESOURCE:noteffective,notpermitted,notinheritableoom_score_adjval