Bonjour à tous
J'ai un souci avec le code suivant :
J'essaie d'insérer *environ ( qui est une chaîne de caractères, n'est-ce pas ? ) dans ma liste, mais j'ai systématiquement une segmentation fault à ce niveau...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 std::list<const char *> MyClass::getEnvParametersMatching(const char *keyRegex) { std::list<const char *> *listRet = new std::list<const char *>(); static regex_t patternBuf; extern char **environ; char strEnviron[256]; char* pchVarName = NULL; if ( regcomp( &patternBuf, keyRegex, REG_EXTENDED ) == 0 ) { // Parcours de l'environnement while ( *environ != NULL ) { // Extrait le nom de la variable strcpy( strEnviron, *environ ); pchVarName = strtok( strEnviron, "="); // Si la clé correspond if (regexec( &patternBuf, pchVarName, 0, 0, 0 ) == 0) { // On l'ajoute à la list listRet->push_back( *environ ); // SEG FAULT ??? } // Variable d'environnement suivante environ++; } } return listRet; }
S'il est effectivement impossible d'ajouter une chaine "VAR=VAL" dans ma list, est-ce que vous auriez une idée pour ajouter simplement le nom de la variable ( VAR ) dans la list ?
Auriez-vous une idée d'où se trouve le problème ?
Par ailleurs, on m'a dit sur le forum C qu'il était interdit de faire environ++. Alors comment parcourir les variables d'environnement autrement ?
Merci d'avance !
Partager