我想编写一个基于控制台的进程管理器。在第一步中,我认为我应该有一个正在运行的进程列表。我正在使用 Windows。
问问题
4229 次
3 回答
1
您可以在 MSDN 上查看此示例。这也可能有帮助。
于 2012-04-04T15:59:11.940 回答
1
您可以使用CreateToolhelp32Snapshot函数来创建当前正在运行的进程的快照。然后你可以使用Process32First和Process32Next来枚举这个列表。
于 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 回答