【问题标题】:Reading and printing status of process in linux-Clinux-C中进程的读取和打印状态
【发布时间】: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* 作为其第一个参数。您正在传递一条路径。

标签: c linux process pid


【解决方案1】:

使用:cat/proc/[pid]/stat

而不是:/proc/[pid]/stat

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多