2012-04-04 14 views
1

Ich möchte einen konsolenbasierten Prozessmanager schreiben. Im ersten Schritt sollte ich eine Liste der laufenden Prozesse haben. Ich benutze Windows.Wie listet man die laufenden Prozesse in C auf?

+0

Also müssen Sie wissen, wie dies auf der Windows- oder Mac-Plattform zu tun? Sie sind verschiedene Bestien. –

+0

mein Projekt ist eine Windows-basierte, aber ich möchte sie beide kennen! –

+2

Sie stellen zwei völlig verschiedene Fragen. Es ist nicht fair, beide gleichzeitig zu fragen. Wähle einen, sortiere ihn aus und komm dann für den anderen zurück. –

Antwort

1

Sie können this example on MSDN betrachten. This könnte auch helfen.

+0

Sie möchten vielleicht auch einige Bücher über die WIN32-Plattform lesen. Ich empfehle das Buch [Programmierfenster] (http://www.charlespetzold.com/pw5/) von Charles Petzold. – npclaudiu

0

Nun, da Sie wissen wollte, wie dies auf dem Mac zu tun, das kann nicht schaden:

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; 
} 

Offensichtlich ist dies gibt eine verknüpfte Liste der laufenden Prozesse, bis Sie für einen Prozess NULL Hit Liste.

+0

Sollte ich eine Header-Datei einschließen? Wie kann ich sie drucken? –

+0

@NimaAhmadi dies ist für Mac, und ich musste keine Header-Dateien enthalten, wenn in Xcode kompiliert. –

+0

@NimaAhmadi Entschuldigung, nach weiteren Untersuchungen scheint es, dass es ein Teil des Carbon Framework ist, und Sie müssen das in Ihr Projekt aufnehmen. –

0

Sie können die Funktion CreateToolhelp32Snapshot verwenden, um eine Momentaufnahme der aktuell ausgeführten Prozesse zu erstellen. Dann können Sie Process32First und Process32Next verwenden, um durch diese Liste aufzuzählen.

+0

kann ich einen Beispielcode haben? –

+0

Dies ist ein Beispiel: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701(v=vs.85).aspx Fragen Sie mich, wenn Sie weitere Fragen haben. –

Verwandte Themen