Getpid sous windows

Résolu
pedrolito81 Messages postés 2 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 26 mai 2008 - 17 avril 2008 à 17:10
xartiel Messages postés 1 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 5 mars 2009 - 5 mars 2009 à 06:49
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

cs_thespartan Messages postés 36 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 26 mai 2008
26 mai 2008 à 00:06
Je viens d'avoir ce problème. Tu as dû trouver la réponse depuis... Rajouter :

#include     // need for getpid() function

Spartan
3
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
17 avril 2008 à 19:01
Aucun rapport avec du code Windows tout cela.

ciao...
BruNews, MVP VC++
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
17 avril 2008 à 20:39
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
0
pedrolito81 Messages postés 2 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 26 mai 2008
26 mai 2008 à 00:50
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xartiel Messages postés 1 Date d'inscription mercredi 1 novembre 2006 Statut Membre Dernière intervention 5 mars 2009
5 mars 2009 à 06:49
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
0