Getpid sous windows [Résolu]

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

5 réponses

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

#include     // need for getpid() function

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

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