草庐IT

exec_proc

全部标签

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

linux - Bash 在 rsync/subshel​​l exec 语句期间不捕获中断

上下文:我有一个包含子shell和EXIT伪信号陷阱的bash脚本,它在rsync期间没有正确地捕获中断。这是一个例子:#!/bin/bashlogfile=/path/to/file;directory1=/path/to/dirdirectory2=/path/to/dircleanup(){echo"Cleaningup!"#dostufftrap-EXIT}trap'{(cleanup;)|2>&1tee-a$logfile}'EXIT(#mainscriptlogic,includingthefollowinglines:(execsleep10;);(execrsync--

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

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

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

php - exec 总是返回 -1(或 127)

我在生产服务器上使用php5.2.9,exec()函数的行为似乎“非标准”。如果我运行exec("ls",$output,$return_var)那么$output将按预期包含当前文件夹中的文件列表,但是$return_var将按预期设置为-1而不是0。我正在使用$return_var来确定命令成功完成的位置,并且在所有其他服务器上测试它按预期工作:)有人遇到过这样的情况吗?编辑:";var_export(Array('command'=>$command,'result'=>$result,'output'=>implode("\n",$output),'r'=>$r,'t2-t1'

linux - 如何解析/proc/pid/cmdline

我正在尝试在Linux上拆分进程的命令行,但似乎我不能依赖它由'\0'字符分隔。你知道为什么有时'\0'字符用作分隔符,有时它是一个常规空格吗?您知道检索可执行文件名称及其路径的其他方法吗?我一直在尝试使用“ps”获取此信息,但它总是返回完整的命令行并且可执行文件名称被截断。谢谢。 最佳答案 使用字符串$cat/proc/self/cmdline|strings-1cat/proc/self/cmdline 关于linux-如何解析/proc/pid/cmdline,我们在StackOv

linux - 使用/proc/stat 准确计算 Linux 中的 CPU 利用率

在/proc/stat中有许多关于如何使用统计信息获取CPU利用率的帖子和引用资料。然而,它们中的大多数只使用7+CPU统计信息中的四个(用户、nice、系统和空闲),忽略了Linux2.6中剩余的jiffieCPU计数(iowait、irq、softirq)。例如,参见DeterminingCPUutilization.我的问题是:iowait/irq/softirq数是否也算在前四个数字之一(user/nice/system/idle)中?换句话说,jiffie总数是否等于前四个统计数据的总和?或者,jiffie总数是否等于所有7个统计数据的总和?如果后者为真,则CPU利用率公式应