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 :

blocage sur la fonction close()


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut blocage sur la fonction close()
    bonjour, j'ai un petit problème avec la fonction close. Je dois créer un SGF. Pour cela, j'ai une fonction ouvrir, fermer, lire et ecrire. Ces fonctions se servent de open, close, read, write du systeme (unix). J'ai quasiment fini ce SGF mais j'ai un appel à close qui reste "bloqué". En effet, j'ouvre fichiers et je copie l'un d'eux dans l'autre, puis je les referme. La copie se passe bien jusqu'à la fermeture du deuxieme fichier. Je me suis aperçu que dans ma fonction copie, on ne dépassait pas l'instruction fermer(nom2) et que dans fermer, on ne dépasse pas close(nom2). Est-ce que close peut vraiment rester bloquée et si oui pourquoi ?

    merci

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Qu'est-ce qu'un SGF? Système de gestion de fichiers? Peut-être peux-tu nous montrer ton code?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    oui c'est un systeme de gestion de fichier. Pour le code, c'est quoi les balises parce que je ne sais plus...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    tant pis voila le code des fonctions où il ya le probleme
    (je ne mets pas tout car il y a un truc comme 400 lignes de 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
    int copier(char * destination, char * source, int taille_art){
    	int i, nb_art, num_log, num_log2, try1, try2;
     
    	num_log = ouvrir(source,'l',taille_art);
    	num_log2 = ouvrir(destination,'e',taille_art);
    	if(num_log == -1 || num_log2 == -1){
    		return -1;
    	}
    	nb_art = tab_bcf[num_log].nb_article_file;
    	char * temp;
    	for(i=0;i<nb_art;++i){
    		temp = lire(num_log,taille_art);
    		ecrire(num_log2,taille_art,temp);
    	}
    	try1 = fermer(num_log);
     
     
    	//c'est ici qu'il y a le problème
    	try2 = fermer(num_log2);
     
     
     
    	if(try1 == -1 || try2 == -1){
    		return -1;
    	}
    	return 0;
    }
     
    int fermer (int num_log){
    	//on se place dans le premier bloc pour sauvegarder les valeurs du fichier
    	lseek(tab_bcf[num_log].num_physic,0,SEEK_SET);
    	write(tab_bcf[num_log].num_physic, &tab_bcf[num_log].taille_article,sizeof(int));
    	write(tab_bcf[num_log].num_physic, &tab_bcf[num_log].nb_article_file,sizeof(int));
     
    	int i ;
     
    	//c'est ici que se retrouve le probleme
    	i = close(num_log);
     
     
    	if(i == -1){
    		printf("erreur fermeture\n");
    	}
    	//mise à jour du tab_ouvert
    	strcpy(tab_ouvert[num_log],pasfich);
     
    	//mise à jour du bcf
    	tab_bcf[num_log].num_physic=-1;
     
    	//on libere le tampon 
    	free(tab_bcf[num_log].tampon);
    	return i;
    }

Discussions similaires

  1. [XL-2007] blocage sur la fonction si
    Par cess2308 dans le forum Excel
    Réponses: 8
    Dernier message: 25/11/2011, 09h18
  2. Blocage alléatoire sur la fonction .Render
    Par MisterMok dans le forum C#
    Réponses: 7
    Dernier message: 04/08/2009, 13h06
  3. [XL-2003] Blocage sur la fonction "linest"
    Par johannj dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/06/2009, 12h08
  4. Blocage sur la fonction de domaine DLookup
    Par pimst37 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/02/2008, 13h46
  5. fonction close sur un bouton
    Par kenshyro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2006, 00h01

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