草庐IT

proc_pid_cmdline

全部标签

linux - Haskell:从/proc 读取。严格和懒惰的问题。过程统计

我在从/proc读取文件时有非常奇怪的行为如果我用prelude的readFile懒惰地读取/proc/pid/stat-它可以工作但不是我想要的方式。使用Data.ByteString.readFile切换到严格读取会给我一个空字符串。我这里需要严格的阅读才能在短时间内比较两次阅读的结果。所以使用System.IO.readFile读取/proc/pid/stat根本行不通。它在0.5秒的间隔内给了我相同的结果。我认为这是由于懒惰和半关闭handle或其他原因......打开和关闭文件句柄明确有效。h但是如果我们有字节串严格阅读,为什么还要这样做。对吧?这就是我卡住的地方。impor

c - 如果 X 不是子进程,我如何等待 PID X 退出?

当PIDX不是我当前进程的子进程时,我如何使用c等待它退出?Kill(pid,SIGTERM);waitpid(pid,NULL,0);以上不起作用,因为“pid”不是子进程。 最佳答案 这是如何订阅和使用PROC_EVENT_EXIT/PROC_EVENT_FORK事件的工作示例。在内核3.3.8上测试#include#include#include#include#include#include#include#include#include#defineNL_MESSAGE_SIZE(sizeof(structnlmsghdr

arrays - 查找正在运行的进程的 PID 并将其存储为数组

我正在尝试编写一个bash脚本来查找正在运行的进程的PID,然后发出kill命令。我让它部分工作,但我面临的问题是可能有多个进程在运行。我想对找到的每个PID发出kill命令。我想我需要将每个PID放入一个数组中,但我不知道该怎么做。我目前拥有的:pid=$(ps-fe|grep'[p]rocess'|awk'{print$2}')if[[-n$pid]];thenecho$pid#kill$pidelseecho"Doesnotexist"fi这将做的是在一行中返回所有PID,但我不知道如何将其拆分为一个数组。 最佳答案 这里有一

找不到 MySql 服务器 PID

我有CentOS6.4和NGINX。当我尝试start/stop/restartmysqlserver(/etc/init.d/mysqldrestart)时,我得到这个错误:MySQLserverPIDfilecouldnotbefound![FAILED]StartingMySQL..TheserverquitwithoutupdatingPIDfile([FAILED]/mysql/mysqld.pid).我该怎么做才能解决这个问题?谢谢! 最佳答案 我在CentOS6.3上遇到了同样的错误,我将MySQL升级到5.6.14,

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 - 如何在 C 中获取 Linux 中进程的 PID

我需要使用killAPI终止进程。为此,我需要进程的进程ID。我尝试使用:ret=system("pidof-sraj-srv");但它没有返回正确的值。我不想用这个终止进程:ret=system("pkillraj");是否有任何API可用于获取进程ID? 最佳答案 您正在获取系统的返回状态。那不是pid。你想要这样的东西:charline[LEN];FILE*cmd=popen("pidof...","r");fgets(line,LEN,cmd);pid_tpid=strtoul(line,NULL,10);pclose(cm