2012-04-04 13 views
1

コンソールベースのプロセスマネージャーを作成します。最初のステップでは、実行中のプロシースのリストが必要だと思います。私はWindowsを使用しています。Cで実行中のプロセスをリストする方法は?

+0

WindowsまたはMacプラットフォームでこれを行う方法を知る必要がありますか?彼らは違う獣です。 –

+0

私のプロジェクトはWindowsベースですが、両方を知りたい! –

+2

全く異なる2つの質問をしています。同時に両方に尋ねるのは公正ではありません。 1つを選択し、それを並べ替えてから、もう一方に戻ってください。 –

答えて

1

this example on MSDNから見ることができます。 Thisも役立ちます。

+0

また、WIN32プラットフォームに関するいくつかの書籍を読むことができます。 Charles Petzoldの[Programming Windows](http://www.charlespetzold.com/pw5/)の本をお勧めします。 – npclaudiu

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を打つまでは明らかに、これは、実行中のプロセスのリンクリストを返します。リスト。

+0

ヘッダファイルを含めるべきですか?どうすればそれらを印刷できますか? –

+0

@NimaAhmadiこれはMac用ですが、Xcodeでコンパイルするとヘッダファイルを含める必要はありませんでした。 –

+0

@NimaAhmadiはさらなる研究の後、私が失礼します。それはCarbon Frameworkの一部であるように見えます。あなたはプロジェクトにそれを含める必要があります。 –

0

CreateToolhelp32Snapshot関数を使用すると、現在実行中のプロセスのスナップショットを作成できます。次に、Process32FirstProcess32Nextを使用して、このリストを列挙できます。

+0

サンプルコードがありますか? –

+0

これは例です:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701(v=vs.85).aspxご質問がある場合は私にご相談ください。 –

関連する問題