我想写一个基于控制台的流程管理器。在第一步中,我想我应该有一个正在运行的程序列表。我正在使用Windows。
答案 0 :(得分:1)
您可以查看this example on MSDN。 This也可能会有所帮助。
答案 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功能创建当前正在运行的进程的快照。然后,您可以使用Process32First和Process32Next来枚举此列表。