【发布时间】:2017-07-16 15:05:47
【问题描述】:
我想使用 C 读取和打印 linux 中进程的 pid 状态。
for(p=0; p<=j; ++p)
{
char buf[512];
FILE *process = popen("pidof -s process[j]", "r");//process[j] contains the cmd line
fgets(buf, 512,process);
pid_t pid = strtoul(buf, NULL, 10);
printf("%s",buf,512);
p=pid;
char status= fscanf("/proc/[pid]/stat", "%s", buf[512]);
}
即我想打印进程的状态。
我能够读取进程的 pid。但我未能从以下位置读取状态:
/proc/[pid]/stat
并打印进程的状态。
【问题讨论】:
-
除了需要在一些地方使用
sprintf将数字插入到适当位置的字符串中,并为fscanf提供正确的参数之外,您已经完成了大部分工作。看看stackoverflow.com/questions/8257714/…有什么问题再回来。 -
@MarkPlotnick 我能够获取存储在进程 [j] 中的进程的 cmd 行的 pid。我想使用 C 打印每个进程的状态
-
您可以编辑问题以显示输出应该是什么样子吗?像
ps这样的程序从状态文件中读取,但添加了一些格式以使信息更具可读性。 -
@MarkPlotnick 检查编辑,我做了必要的更改。
-
fscanf将 FILE* 作为其第一个参数。您正在传递一条路径。