Getpid sous windows [Résolu]

pedrolito81
Messages postés
2
Date d'inscription
jeudi 17 janvier 2008
Dernière intervention
26 mai 2008
- 17 avril 2008 à 17:10 - Dernière réponse : xartiel
Messages postés
1
Date d'inscription
mercredi 1 novembre 2006
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
Afficher la suite 

Votre réponse

5 réponses

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

#include     // need for getpid() function

Spartan

Merci cs_thespartan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_thespartan
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 17 avril 2008 à 19:01
0
Merci
Aucun rapport avec du code Windows tout cela.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Neo_Fr
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
10 novembre 2014
- 17 avril 2008 à 20:39
0
Merci
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
Commenter la réponse de Neo_Fr
pedrolito81
Messages postés
2
Date d'inscription
jeudi 17 janvier 2008
Dernière intervention
26 mai 2008
- 26 mai 2008 à 00:50
0
Merci
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
Commenter la réponse de pedrolito81
xartiel
Messages postés
1
Date d'inscription
mercredi 1 novembre 2006
Dernière intervention
5 mars 2009
- 5 mars 2009 à 06:49
0
Merci
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
Commenter la réponse de xartiel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.