Getpid sous windows

Résolu
Signaler
Messages postés
2
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
26 mai 2008
-
Messages postés
1
Date d'inscription
mercredi 1 novembre 2006
Statut
Membre
Dernière intervention
5 mars 2009
-
Bonjour,

Je dois travailer sur un petit prog en C++ sous windows créé par un stagiaire il y a 4 ans, et le gars n'est pas trop joignable.
Je suis débutant mais je ne vais avoir à modifier que des actions sur les fichiers texte donc pour ca je me débrouillerai;

J'essaie donc de compiler ces sources avec GCC sous codeblock et j'ai un problème avec getpid(). Voici le bout de code qui pose probleme:

//attente du fils
  cwait(NULL,getpid("redacteur.exe"),1);
  os.close();
  osr.close();
  osMAJ.close();

 A la compilation j'obtiens un beau:
|error: `getpid' was not declared in this scope|

Je ne trouve rien pour m'aider.
Je ne sais pas si ca a quelquechose à voi mais j'ai lu sur msdn que getpid() avait été remplacé par _getpid()

J'essaie donc de remplacer getpid() par _getpid() et la j'obtiens dans process.h:
lib\gcc\mingw32\3.4.5\..\..\..\..\include\process.h|63|error: too many arguments to function `_pid_t _getpid()'|

getpid() est donc bien une fonction windows? Car j'ai lu qu'elle est surtout utilisée avec fork sous unix...
Il m'a seulement dit qu'il avait utilisé WinDev pour le compiler. Sous WinDev meme erreur: Ca me parait logique puisque si je ne dis pas de betise il utilise aussi GCC

Je tourne en rond depuis plusieurs jours et ne sais plus vers ou chercher.

Si il faut des précisions dites-moi, je ne voulais pas être trop long.

Merci d'avance.

Pedrolito81

5 réponses

Messages postés
36
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
26 mai 2008

Je viens d'avoir ce problème. Tu as dû trouver la réponse depuis... Rajouter :

#include     // need for getpid() function

Spartan
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Aucun rapport avec du code Windows tout cela.

ciao...
BruNews, MVP VC++
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Essaye avec ce bout de code:
DWORD __stdcall GetPID(LPSTR lpszProcessName)
{
HANDLE hSnapshot;
PROCESSENTRY32 ProcessEntry;
DWORD dwPID = 0;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot == INVALID_HANDLE_VALUE) return 0;
ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hSnapshot, &ProcessEntry)) { CloseHandle(hSnapshot); return 0; }
while(1)
{
if(!strcmp(lpszProcessName, ProcessEntry.szExeFile))
{
dwPID = ProcessEntry.th32ProcessID;
break;
}
if(!Process32Next(hSnapshot, &ProcessEntry)) break;
}
CloseHandle(hSnapshot);
return dwPID;
}

Neo_Fr
Messages postés
2
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
26 mai 2008

Merci pour ta réponse,

J'ai abandonné ce programme depuis. Il s'agissait d'un programme d'import de produits dans un logiciel de gestion ma boite va finalement changer, donc plus la peine que je perde du temps la dessus.

Si mes souvenirs sont bons j'avais bien inclus le unistd.h et ca se marchait toujours pas.

Si pour toi celà fonctionne je passe le post en résolu.

Bonne continuation.

Pedrolito81
Messages postés
1
Date d'inscription
mercredi 1 novembre 2006
Statut
Membre
Dernière intervention
5 mars 2009

juste pour ceux qui cherche (c'etais mon cas :) )

|----
int _getpid( void )

Return Value

Returns the process ID obtained from the system. There is no error
return.

Remarks

The _getpid function obtains the process ID from
the system. The process ID uniquely identifies the calling process.

Requirement

Routine |Required header |----
_getpid

For more compatibility information, see <mshelp:link tabindex="0" keywords="346709CB-EDDA-4909-9A19-3D253EDDB6B7">Compatibility</mshelp:link> in
the Introduction.

Example

  |
|----
// crt_getpid.c
// This program uses _getpid to obtain
// the process ID and then prints the ID.

#include <stdio.h>
#include

int main( void )
{
// If run from command line, shows different ID for
// command line than for operating system shell.

printf( "Process id: %d\n", _getpid() );
}

  |
|----
Process id: 3584