2008-11-18 5 views
22

Teile meiner Anwendung sind in C++ unter Windows. Ich benötige die Prozess-ID für den aktuellen Prozess. Irgendwelche Gedanken?ms C++ pid des aktuellen Prozesses

+0

nette Frage tatsächlich –

+2

Ich las es zuerst als "loswerden aktuellen Prozess" :) – Otherside

+0

@Otherside machte mich im Vokabular – SerG

Antwort

33

Die GetCurrentProcessId Funktion wird dies tun.

+3

schauen yup, das hat es getan; lustig, wie obskur diese Information ist ... –

+0

Es gibt auch '_getpid()' - http://msdn.microsoft.com/en-us/library/t2y34y40%28v=vs.80%29.aspx – user93353

+1

'_getpid () 'ruft nur' GetCurrentProcessId() 'auf. Es gibt nur eine Prozess-ID, und die Funktion der niedrigsten Ebene, die es zurückgibt, ist "GetCurrentProcessId()". –

5

Nachdem ich mich daran gewöhnt hatte, Yards und Yards Code zu sehen, um scheinbar einfache Aufgaben zu erledigen, war ich angenehm überrascht von der Direktheit von GetCurrentProcessId. Früher habe ich beobachtet, wie es in einem Debugger ausgeführt wurde, als ich einem neuen Codebeispiel in einer DllMain-Routine folgte, die die Prozess-ID mit einer eingebetteten GUID kombiniert, um einen lokal eindeutigen Namen für einen Mutex zu erstellen.

Folgendes ist die gesamte Routine, alle drei Maschinenanweisungen.

mov   eax,fs:[00000018] 
mov   eax,dword ptr [eax+20h] 
ret 

BTW, zwei andere gesegneten einfache Windows-API-Funktionen sind GetLastError und SetLastError; in der Tat sind beide diesem sehr ähnlich.

+0

Ich habe vergessen zu erwähnen, dass "kurze, süße" Gruppe GetProcessHeap ist. –