如何在C中列出正在运行的进程?

时间:2012-04-04 15:38:31

标签: c windows

我想写一个基于控制台的流程管理器。在第一步中,我想我应该有一个正在运行的程序列表。我正在使用Windows。

3 个答案:

答案 0 :(得分:1)

您可以查看this example on MSDNThis也可能会有所帮助。

答案 1 :(得分:0)

好吧,既然你想知道如何在Mac上这样做,这不会有害:

struct ProcessList {
    pid_t value;
    struct ProcessList *next;
};

struct ProcessList *getProcesses()
{
    struct ProcessList *process = malloc(sizeof(struct ProcessList));
    struct ProcessList *next = process;
    ProcessSerialNumber psn = { 0, kNoProcess };

    GetProcessPID(&psn, &process->value);

    while (noErr == GetNextProcess(&psn)) {
        pid_t pid;
        if (noErr == GetProcessPID(&psn, &pid)) {
            next = next->next = malloc(sizeof(struct ProcessList));
            next->value = pid;
        }
    }

    next->next = NULL;
    return process;
}

显然,这将返回正在运行的进程的链接列表,直到您为进程列表命中NULL。

答案 2 :(得分:0)

您可以使用CreateToolhelp32Snapshot功能创建当前正在运行的进程的快照。然后,您可以使用Process32FirstProcess32Next来枚举此列表。