1

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

4

3 回答 3

1

您可以在 MSDN 上查看此示例。也可能有帮助。

于 2012-04-04T15:59:11.940 回答
1

您可以使用CreateToolhelp32Snapshot函数来创建当前正在运行的进程的快照。然后你可以使用Process32FirstProcess32Next来枚举这个列表。

于 2012-04-04T16:02:32.283 回答
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。

于 2012-04-04T16:01:50.240 回答