IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Accès impossible à un flux fichier


Sujet :

C

  1. #1
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut Accès impossible à un flux fichier
    Bonjour à tous,

    c'est les mains moites et tremblantes de rage et de désespoir que je m'en remets à vous, à cette heure tardive où je dois terminer un bout de code plus faire une foultitude d'autres choses avant ce soir.

    J'ai un code dont le rôle est d'analyser chaque ligne de deux fichiers triés. Chaque ligne est lue et comparée à la ligne de l'autre fichier.

    Les deux fichiers sont nommés fichier FNR et fichier MPS.

    pour chaque ligne, le préfixe de cette ligne (numéro de 11 caractère de long) est comparé à celui de la ligne de l'autre fichier. s'ensuivent trois cas :

    -le préfixe du fichier FNR est inférieur à celui de MPS => la ligne FNR est non existante dans MPS. un traitement est fait puis une nouvelle ligne FNR est lue.

    -le préfixe du fichier MPS est inférieur à celui de FNR => la ligne MPS est non existante dans FNR. un traitement est fait puis une nouvelle ligne MPS est lue.

    -les deux préfixes sont égaux, les deux lignes sont correspondantes. Une vérification des autres champs composant les lignes est alors faite, et en cas de non-similitude un traitement est effectué.

    Le problème que je rencontre est que la lecture d'une nouvelle ligne provoque un plantage après lu une nouvelle ligne dans les deux fichiers.

    Dans mon exemple, deux première lignes sont lues, comparées. mes fichiers de tests font en sorte qu'elles sont égales. confoprmément à l'algo une nouvelle ligne est donc lue dans chaque fichier. ces deux nouvelles lignes ne sont pas égales, on passe donc dans le cas "donnée unique à FNR". et là, c'est le drame, tout accès au fichier FNR, que ce soit un fgets, un ftell, un fseek ou autre provoque un plantage.

    Ca fait quatre heures que je cherche à savoir pourquoi, et j'estime ne plus avoir le recul et la patience nécessaires pour trouver. Je vous appelle donc à l'aide, et vous remercie de vos réponses par avance. Ma nuit en dépend, ainsi que mon avenir dans la boîte.

    voici le code :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    #include "biblio.h"
    
    
    int main()
    {
    	FILE * fichier;
    	FILE * fichierMPS;
    	FILE * fichierFNR;
    	char log[200];
    	char * donneeFNR;
    	char * donneeMPS;
    	char temp1[150] = "";
    	char temp2[150] = "";
    	char * tempEnvironnement;
    	char ** ligneConf;
    	char ** correspondance;
    
    	int i;
    	int valeurRetour = 0;
    	int valide = 1;
    	int luMPS = 0;
    	int luFNR = 0;
    	double comp;
    
    	//valeur pour le compte-rendu
    	long compteurFNRUniques = 0;
    	long compteurMPSUniques = 0;
    	long compteurDiffIMSI = 0;
    	long compteurDiffHLR = 0;
    	long compteurDiffRN = 0;
    
    
    	ligneConf = (char**)malloc(sizeof(char*));
    	ligneConf[0] = (char *)malloc(sizeof(char) * 100);
    
    	correspondance = (char**)malloc(sizeof(char*));
    	correspondance[0] = (char *)malloc(sizeof(char) * 100);
    
    	donneeFNR = (char *)malloc(sizeof(char) * 150);
    	donneeMPS = (char *)malloc(sizeof(char) * 150);
    
    	log[0] = '\0';
    
    
    
    	
    
    	/////////////////////////////////
    	////////////////////////
    	//////DEBUT DE LA COMPARAISON FNR1 - MPS
    	////////////////////////
    	/////////////////////////////////
    
    	//logger
    	AvoirDate(log);
    	strcat(log, "Debut de la comparaison FNR-MPS...");
    	AjouterEntree(g_CheminFichierCompteRenduAnalyse, log);
    
    	//informer utilisateur 
    	printf("\nDebut de la comparaison : FNR1 et MPS");
    
    	if (((fichierFNR = fopen(g_CheminFichierDecodageFNR1, "r")) != NULL)&&((fichierMPS = fopen(g_CheminFichierDecodageMPS, "r")) != NULL))
            {
    
    		//debut comparaison
    
    		
    printf("\nlol : %d", ftell(fichierFNR));
    		//lecture de la premiere ligne de chaque fichier
    		if((fgets(donneeFNR, 150, fichierFNR)) == NULL)luFNR = 1;
                    if((fgets(donneeMPS, 150, fichierMPS)) == NULL)luMPS = 1;
    
    printf("\nlol : %d", ftell(fichierFNR));
    
    		//mettre dans temp1 le MSISDN de MPS
    		strcpy(temp1, donneeMPS);
                    Estrtok(temp1, ';', 0);
    
    		//assigner a comp la valeur numerique du MSISDN  de MPS
                    comp = atof(temp1);
    
    		//assigner maintenant a temp1 le MSISDN de FNR
                    strcpy(temp1, donneeFNR);
                    Estrtok(temp1, ';', 0);
    
    
    		//tant que la ligne de FNR1 lue ne commence pas par un MSISDN
                    while((strlen(temp1) != 11)&&(luFNR ==0))
                    {
                            //lire prochaine ligne
                            if((fgets(donneeFNR, 100, fichierFNR)) == NULL)luFNR = 1;
    
                            //selectionner le MSISDN
                            strcpy(temp1, donneeFNR);
                            Estrtok(temp1, ';', 0);
                    }
    
    
    		//boucle :
    		//tant que les deux fichier n'ont pas ete entierement parcourus
    		
    		while((!luFNR)||(!luMPS))
                    {
    			//les fichiers sont senses etre tries. trois cas sont alors confrontes. Si MSISDN ligne FNR < MSISDN ligne MPS,
                            //alors c'est que le MSISDN MPS est manquant. l'inverse est teste aussi.
                            //si aucun des deux cas n'est releve, c'est que les deux MSISDN sont egaux, donc que c'est normal.
                            //s'ensuivent alors les traitement normaux
    
    			//prendre les MSISDN des deux lignes
    			//pour rappel comp vaut la valeur numerique du MSISDN de MPS
    			// et temp1 vaut le MSISDN (string) de FNR
    
    			//MSISDN unique a FNR
    			if ((comp > atof (temp1))||((luMPS)&&(!luFNR)))
    			{
    printf("\nlol : %d", ftell(fichierFNR));
    				//logger en tant que MSISDN unique a FNR1
    
    				AvoirDate(log);
    				strcat(log, "MSISDN unique a FNR1 par rapport a MPS : ");
    				strcat(log, donneeFNR);
    				AjouterEntree(g_CheminFichierLog, log);
    
    printf("\nlol1");
    printf("\nlol2");
    				//lire nouvelle ligne FNR1
                                    if((fgets(donneeFNR, 150, fichierFNR)) == NULL)luFNR = 1;// CA PLANTE ICI
    printf("\ncoucou1\n");
    
    				//associer a temp1 le MSISDN de MPS
                                    strcpy(temp1, donneeMPS);
    				//assigner a comp la valeur numerique du MSISDN de MPS
                                    Estrtok(temp1, ';', 0);
                                    comp = atof(temp1);
    
    				//associer a temp1 le nouveau MSISDN de FNR
                                    strcpy(temp1, donneeFNR);
                                    Estrtok(temp1, ';', 0);
    
    				//incrementer le compteur
    				compteurFNRUniques++;
    
    				//tant que la ligne de FNR1 lue ne commence pas par un MSISDN
    				while((strlen(temp1) != 11)&&(luFNR ==0))
    				{
    					//lire prochaine ligne
    					if((fgets(donneeFNR, 150, fichierFNR)) == NULL)luFNR = 1;
    
    					//selectionner le MSISDN
    					strcpy(temp1, donneeFNR);
    					Estrtok(temp1, ';', 0);
    				}
    
    
    			}
    			//MSISDN unique a MPS
    			else if ((comp < atof(temp1))||((luFNR)&&(!luMPS)))
    			{
    printf("\ncoucou2\n");
    				//logger en tant que MSISDN unique a MPS
    
    				AvoirDate(log);
    				strcat(log, "MSISDN unique a MPS par rapport a FNR1 : ");
    				strcat(log, donneeFNR);
    				AjouterEntree(g_CheminFichierLog, log);
    
    				//incrementer le compteur
    				compteurMPSUniques++;
    
    
    				donneeMPS[0] = '\0';
                                    //lire nouvelle ligne MPS
                                    if((fgets(donneeMPS, 150, fichierMPS)) == NULL)luMPS = 1;
    
    
    				//associer a temp1 le nouveau MSISDN de MPS
                                    strcpy(temp1, donneeMPS);
                                    Estrtok(temp1, ';', 0);
    				//assigner a comp la valeur numerique du MSISDN de MPS
                                    comp = atof(temp1);
    
    				//associer a temp1 le MSISDN de FNR
                                    strcpy(temp1, donneeFNR);
                                    Estrtok(temp1, ';', 0);
    
    
    			}
    			//les deux MSISDN sont communs
    			else
    			{
    printf("\ncoucou3\n");
    				//verifier la concordance des donnees associees
    
    				//examiner le deuxieme champ de ligne FNR pour deteriner la nature des donnees a comparer
    				strcpy(temp1, donneeFNR);
    				Estrtok(temp1, ';', 1);
    
    				//si c'est un couple MSISDN-RN chez FNR
    				if (strlen(temp1) < 5)
    				{
    					//regarder le quatrieme champ dans MPS
    					strcpy(temp2, donneeMPS);
    					Estrtok(temp2, ';', 3);
    
    					//si les deux champs sont egaux en rien faire,
    					//si les deux champs sont differents logger
    					if((strcmp(temp1, temp2)) != 0)
    					{
    						//prelever le MSISDN
    						strcpy(temp1, donneeFNR);
    						Estrtok(temp1, ';', 0);
    
    						//logger
    						AvoirDate(log);
    						strcat(log, "difference de RN pour le MSISDN");
    						strcat(log, temp1);
    						strcat(log, "entre FNR1 et MPS");
    						AjouterEntree(g_CheminFichierLog, log);
    
    						//incrmenter le compteur
    						compteurDiffRN++;
    					}
    				}
    				//si c'est un trio MSISDN-IMSI-HLR chez FNR
    				else
    				{
    					//regarder le deuxieme champ dans MPS (IMSI)
    					strcpy(temp2, donneeMPS);
    					Estrtok(temp2, ';', 1);
    
    					//si les deux champs sont egaux verifier le HLR
    					//sinon logger
    					if((strcmp(temp1, temp2)) != 0)
    					{
    						//prelever le MSISDN
    						strcpy(temp1, donneeFNR);
    						Estrtok(temp1, ';', 0);
    
    						//logger
    						AvoirDate(log);
    						strcat(log, "difference d'IMSI pour le MSISDN");
    						strcat(log, temp1);
    						strcat(log, "entre FNR1 et MPS");
    						AjouterEntree(g_CheminFichierLog, log);
    
    						//incrementer le compteur
    						compteurDiffIMSI++;
    					}
    					else
    					{
    						//examiner maintenant les HLR des deux entrees
    						strcpy(temp1, donneeFNR);
    						Estrtok(temp1, ';', 2);
    
    						strcpy(temp2, donneeMPS);
    						Estrtok(temp2, ';', 2);
    
    						//verifier les HLR a l'aide des tables
    						i = Chercher(g_CheminTableauAssociationHLR, temp1);
    						if (i > 0)correspondance = LireLigne (g_CheminTableauAssociationHLR, i, i);
    						else
    						{
    							printf("\nLe numero de HLR %s, sense se trouver dans le fichier %s, n'a pas ete trouve. La commande MML ne sera pas ecrite.", g_CheminTableauAssociationHLR, temp1);
    
    							//log
    							AvoirDate(log);
    
    							tempEnvironnement = getenv("PS1");
    
    							Estrtok(tempEnvironnement, '@', 1);
    							Estrtok(tempEnvironnement, ':', 0);
    
    							if(tempEnvironnement != NULL){strcat(log, tempEnvironnement);strcat(log, ";");}
    							else strcat(log, ";");
    
    							strcat(log, "audit;");
    
    							sprintf(log, "%s%d;", log, getpid());
    
    							tempEnvironnement = getenv("USER");
    							if(tempEnvironnement != NULL)strcat(log, tempEnvironnement);
    							else strcat(log, ";");
    
    							strcat(log, ";NOTICE;comparer.c;AUD;031;Le numero de HLR");
    
    							strcat(log, temp1);
    							strcat(log, "n'a pas ete trouve dans le fichier d'association. La commande MML de creation ne sera pas ecrite;;");
    
    							AjouterEntree(g_CheminFichierLog, log);
    						}
    						Estrtok(correspondance[0], 164, 0);
    
    						//assigner a temp1 la valeur du HLR de FNR
    						strcpy(temp1, correspondance[0]);
    
    printf("\ntemp1 : %s", temp1);
    					}
    				}
    
    				donneeMPS[0] = '\0';
    				donneeFNR[0] = '\0';
    
    printf("\nlol : %d", ftell(fichierFNR));
                                    //lire nouvelle ligne MPS
                                    if((fgets(donneeMPS, 150, fichierMPS)) == NULL)luMPS = 1;
    				//lire nouvelle ligne FNR1
                                    if((fgets(donneeFNR, 150, fichierFNR)) == NULL)luFNR = 1;
    
    printf("\nlol : %d", ftell(fichierFNR));
    				//associer a temp1 le nouveau MSISDN de MPS
                                    strcpy(temp1, donneeMPS);
                                    Estrtok(temp1, ';', 0);
    				//assigner a comp la valeur numerique du MSISDN de MPS
                                    comp = atof(temp1);
    
    				//associer a temp1 le nouveau MSISDN de FNR
                                    strcpy(temp1, donneeFNR);
                                    Estrtok(temp1, ';', 0);
    
    				//tant que la ligne de FNR1 lue ne commence pas par un MSISDN
    				while((strlen(temp1) != 11)&&(luFNR ==0))
    				{
    					//lire prochaine ligne
    					if((fgets(donneeFNR, 150, fichierFNR)) == NULL)luFNR = 1;
    
    					//selectionner le MSISDN
    					strcpy(temp1, donneeFNR);
    					Estrtok(temp1, ';', 0);
    				}
    printf("\nlol : %d", ftell(fichierFNR));
    			}
    		}
    		fclose(fichierFNR);
    		fclose(fichierMPS);
    	}
    	else
    	{
    		//mettre la valeur de retour a 1 pour VTOm
    		valeurRetour = 1;
    
    		//informer utilisateur
    		printf("\nErreur d'ouverture des fichiers de FNR1 ou MPS decodes.");
    
    		//logger
    		AvoirDate(log);
    		strcat(log, "Erreur d'ouverture des fichiers de FNR1 ou MPS decodes. Fin de la comparaison");
    		AjouterEntree(g_CheminFichierCompteRenduAnalyse, log);
    	}
    
    
    
    	return valeurRetour;
    }
    PS : les printf(lol); et autres sont des témoins pour le debug. c'est préhistorique mais j'en suis là

  2. #2
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    as tu vérifié que ton fichier était correctement ouvert?

    cela me rappelle un projet chez bouygues?

  3. #3
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    dans mon code se situent les contrôles nécessaires lors de l'ouverture des fichiers (regarde bien)

    et en effet je suis chez bouygues, mais chut... je ne souhaite pas passer pour un branque, déjà que j'ai l'air d'un zombie psychotique à ménerver sur mon clavier...

  4. #4
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    tu peux essayer de regarder ou cela plante en utilisant le core dump

    si cela ne genere pas de core dump
    tape ulimit -c unlimited avant de lancer ton programme.

    ensuite tu peux essayer de faire un débuggage post mortem.

  5. #5
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    j'ai en effet un message indiquant bus error (core dump) pour indiquer le plantage... ça écrit quelque part à quelle ligne ça plante? ou ça?

  6. #6
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    je suppose que tu es sur sun avec forte ou gcc

    Normalement tu as un fichier core qui a été généré.

    Pour pouvoir faire un debuggage post mortem il faut que ton appli soit compilé en mode débug (flag -g sur le compilateur en general)


    ensuite tu lance gdb <monprog> <mon fichier core>

    Apres tu peux retrouver la ligne ou ça a planté en tappant where (si je me souviens bien)

    gdb est probablement quelque part sous /opt/SUNWSPRO si je me souvies bien

  7. #7
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    la station n'a pas gdb...

    mais je pense que c'est erreur à la con, désolé de l'écart, qui me pourrit la vie. genre j'oublie un pointeur, de vider un buffer ou une connerie de ce genre. auriez-vous une idée?

  8. #8
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    et dbx (un autre debugger que tu dois pouvoir trouver)

  9. #9
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    il ne connait pas non plus. et aucun moyen d'installer (même si j'avais les compétences requises pour installer un truc je n'aurai pas les droits)
    les machines sont assez limitées en matière de soft. Le seul éditeur, par exemple, est vi. pas vim, pas emacs.

  10. #10
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    et dbx (un autre debugger que tu dois pouvoir trouver)


    http://docs.sun.com/app/docs/doc/819-5257

  11. #11
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    tu as quoi sous /opt?


    perso j'avas récupéré emacs et je l'avais compilé sous mon compté a l'époque ou j'etais là bas.

  12. #12
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    je te le mets en vrac car je ne sais pas ce que c'est

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    drwxr-xr-x  54 root     root        1024 Mar 26 15:24 .
    drwxr-xr-x  43 root     root        2048 Jul 17 16:24 ..
    lrwxrwxrwx   1 root     root          16 Jan 21 18:39 BMC -> /opt/BMC_install
    drwxr-xr-x   4 root     root         512 Mar 26 15:24 BMC_install
    drwxr-xr-x   2 root     other        512 Jan 16  2009 BTexplo
    drwxrwxr-x   4 root     other        512 Jan 21 20:23 HDVM
    drwxr-x---   3 root     root         512 Mar 26 15:24 Installbmc
    drwxr-xr-x   3 root     other        512 Jan 21 19:21 ORCLfmap
    dr-xr-xr-x  11 root     bin          512 Jan 16  2009 SUNWexplo
    drwxr-xr-x   3 root     bin          512 Jan 16  2009 SUNWits
    drwxr-xr-x   8 root     root         512 Jan 16  2009 SUNWlwact
    drwxr-xr-x   4 root     bin          512 Jan 16  2009 SUNWmlib
    drwxr-xr-x   5 root     sys          512 Jan 16  2009 SUNWrtvc
    drwxr-xr-x   6 root     root         512 Jan 16  2009 SUNWsneep
    drwxr-xr-x   7 root     root         512 Jan 16  2009 SYMClma
    drwxr-xr-x   8 root     sys          512 Jan 16  2009 VRTS
    drwxr-xr-x  10 root     other        512 Jan 16  2009 VRTSaa
    drwxr-xr-x   6 root     other        512 Jan 16  2009 VRTSalloc
    drwxr-sr-x   5 root     bin          512 Jan 16  2009 VRTSat
    drwxr-xr-x   6 root     sys          512 Jan 16  2009 VRTSccg
    drwxr-xr-x   7 nobody   nobody       512 Jan 16  2009 VRTSdcli
    drwxr-xr-x   4 bin      bin          512 Jan 16  2009 VRTSddlpr
    drwxr-xr-x   4 bin      bin          512 Jan 16  2009 VRTSdsa
    drwxr-xr-x   7 bin      bin          512 Jan 16  2009 VRTSfspro
    drwxr-xr-x   4 root     sys          512 Jan 16  2009 VRTSfssdk
    drwxr-xr-x   6 root     root         512 Jan 16  2009 VRTSicsco
    drwxr-xr-x   4 root     sys          512 Jan 16  2009 VRTSjre
    drwxr-xr-x   7 root     other        512 Jan 16  2009 VRTSmh
    drwxr-xr-x  12 bin      bin          512 Jan 16  2009 VRTSob
    drwxr-xr-x   3 root     root         512 Jan 16  2009 VRTSobc
    drwxr-xr-x   6 root     root         512 Jan 16  2009 VRTSpbx
    drwxr-xr-x   5 root     other        512 Jan 16  2009 VRTSperl
    drwxr-xr-x   6 root     root         512 Jan 16  2009 VRTSsmf
    dr-xr-xr-x   7 root     other        512 Jan 16  2009 VRTSspt
    drwxr-xr-x   4 root     other        512 Jan 16  2009 VRTSvcs
    drwxr-xr-x   4 root     sys          512 Jan 16  2009 VRTSvdid
    drwxr-xr-x   5 root     sys          512 Jan 16  2009 VRTSvlic
    drwxr-xr-x   6 root     root         512 Jan 16  2009 VRTSvmpro
    drwxr-xr-x   5 root     sys          512 Jan 16  2009 VRTSvrpro
    drwxr-xr-x   4 root     sys          512 Jan 16  2009 VRTSvrw
    drwxr-xr-x   5 nobody   nobody       512 Jan 16  2009 VRTSvsvc
    drwxr-xr-x   3 root     sys          512 Jan 16  2009 VRTSvxfi
    drwxr-xr-x   6 root     sys          512 Jan 16  2009 VRTSvxfs
    drwxr-xr-x   3 root     sys          512 Jan 16  2009 VRTSvxms
    drwxr-xr-x   5 bin      bin          512 Jan 16  2009 VRTSvxvm
    drwxr-xr-x  11 root     other        512 Jan 16  2009 VRTSweb
    drwxr-xr-x   8 best1    stat         512 Jan 21 18:29 best1
    drwxr-xr-x  14 root     sys         1024 Jan 27 20:10 jp1pc
    drwx------   2 root     root        8192 Jan 16  2009 lost+found
    drwxrwxrwx   3 evmadm   bimadm       512 Jan 21 18:29 msend
    drwxr-xr-x  25 patrol   patrol      1024 Jan 21 20:13 patrol
    drwxr-xr-x   2 root     root         512 Feb  3 15:10 studio12
    drwxr-xr-x   8 teleadm  sysadmin     512 Jan 21 19:01 teleadm
    drwxr-xr-x  16 root     root        1024 Jan 21 18:56 teleadm-source
    drwxr-xr-x   3 root     root         512 Jan 16  2009 tmp

  13. #13
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Effectivement cela n'a pas l'air d'être là (ce serais dans SUNpro)

    tu pourrais demander a un admin de te l'installer (a moins que tu sois en environnement de preprod ou de qualif), sinon tu vas perdre pas mal de temps.

    (il es peu etre sur une autre machine dev)

    Et le debugger fait vraiment gagner du temps dans ce genre de plantage car il te permet de trouver plus rapidement la ligne qui plante. et donc d'affiner ton analyse.

  14. #14
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    je te remercie de tes conseils mais :

    1) il est 19h43 et je suis seul dans mon bureau
    2) tous les mecs de pre prod et de qualif sont partis
    3) je sais déjà précisément à quelle ligne ça plante, j'ai également mis un marqueur dans mon code pour vous l'indiquer. A défaut d'apprendre à me servir d'un débugger, j'utilise mes petites méthodes, ce qui m'a permis de savoir où ça plantait (les fameux "lol"). Ce que je ne sais pas c'est pourquoi ça plante

    PS : en effet mon marquer n'est pas très visible. je vais le mettre en bleu

  15. #15
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    tu as peu etre atteint la fin de ton fichier?
    et quand tu essaye de refaire une lecture dessus ça se plante

  16. #16
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    cela n'est pas le cas puisque la seule opération de lecture que je fais sur le fichier est fgets, et la valeur de retour est systématiquement testée.

    de plus, lire un fichier déjà lu en entier à l'aide de fgets ne fait pas planter. un ftell non plus

  17. #17
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    tu tes NULL pas EOF?

    fgets() lit au plus size - 1 caract�res depuis stream et
    les place dans le buffer point� par s. La lecture
    s'arr�te apr�s EOF ou un retour-chariot. Si un retour-
    chariot (newline) est lu, il est plac� dans le buffer. Un
    caract�re nul '\0' est plac� � la fin de la ligne.

  18. #18
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    c'est la valeur de retour de fgets qui est testée... et cette valeur est soit égale au pointeur vers la string modifiée, soir NULL.

    j'ai érpouvé cette méthode dans d'autre programmes qui marchent nickel

  19. #19
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    ok désolé c'est vendredi soirs (je suis aussi encore au taf) et mes idées ne sont plus tres clair non plus

  20. #20
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    c'est gentil de ta part... tu as un autre axe de réflexion?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Accès impossible à certains fichiers
    Par Abou Zar dans le forum Apache
    Réponses: 2
    Dernier message: 11/05/2010, 14h28
  2. Accès impossible aux fichiers partagés
    Par sphinx18 dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/11/2008, 12h26
  3. Réponses: 6
    Dernier message: 05/11/2007, 14h35
  4. Réponses: 9
    Dernier message: 19/08/2004, 11h03
  5. Accès impossible au serveur MySQL
    Par aliasjcdenton dans le forum Installation
    Réponses: 3
    Dernier message: 19/05/2003, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo