Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中列出正在运行的进程?_C_Windows - Fatal编程技术网

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

如何在C中列出正在运行的进程?,c,windows,C,Windows,我想编写一个基于控制台的流程管理器。在第一步中,我想我应该有一个运行过程的列表。我正在使用Windows。您可以查看。也可能有帮助。您可以查看。可能也会有帮助。既然您想知道如何在mac上执行此操作,那么这也无妨: struct ProcessList { pid_t value; struct ProcessList *next; }; struct ProcessList *getProcesses() { struct ProcessList *process =

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

您可以查看。也可能有帮助。

您可以查看。可能也会有帮助。

既然您想知道如何在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以获取进程列表。

好吧,既然您想知道如何在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。

您可以使用该函数创建当前正在运行的进程的快照。然后,您可以使用和枚举此列表。

您可以使用该函数创建当前运行进程的快照。然后您可以使用和枚举此列表。

那么您需要知道如何在Windows或Mac平台上执行此操作吗?他们是不同的野兽。我的项目是基于Windows的,但我想了解他们两个!你在问两个完全不同的问题。同时问两个问题是不公平的。挑一个,整理一下,然后回来找另一个。好的,让我知道如何在Windows上做。那么你需要知道如何在Windows或Mac平台上做这件事吗?他们是不同的野兽。我的项目是基于Windows的,但我想了解他们两个!你在问两个完全不同的问题。同时问两个问题是不公平的。挑一个,整理一下,然后回来找另一个。好的,让我知道如何在Windows上做。你可能还想读一些关于WIN32平台的书。我推荐查尔斯·佩佐尔德(Charles Petzold)的这本书。我很感激这本书已经有好几年的历史了,但即使在2012年,也不鼓励只提供链接的答案。向某人指出文档或建议使用谷歌搜索词可能只值得发表评论。您可能还想阅读一些关于WIN32平台的书籍。我推荐查尔斯·佩佐尔德(Charles Petzold)的这本书。我很感激这本书已经有好几年的历史了,但即使在2012年,也不鼓励只提供链接的答案。向某人指出文档或建议使用谷歌搜索词可能只值得发表评论。我应该包括任何头文件吗?如何打印?@NimaAhmadi这是Mac版的,在Xcode中编译时我不需要包含任何头文件。@NimaAhmadi对不起,经过进一步研究,它似乎是Carbon框架的一部分,您必须将其包含在您的项目中。我应该包含头文件吗?如何打印?@NimaAhmadi这是Mac版的,在Xcode中编译时我不需要包含任何头文件。@NimaAhmadi对不起,经过进一步研究,它似乎是Carbon框架的一部分,你必须在你的项目中包括这一点。这是一个例子:如果你有进一步的问题问我。这是一个例子:如果你有进一步的问题问我。