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 :

openFileMapping en c pas en c++


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 30
    Par défaut openFileMapping en c pas en c++
    Bonjour,

    Je suis en train de créer une mémoire partagé entre deux shell(msys windows), donc je créé un programme client (je partage le contenu du file a.txt):

    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
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include <tchar.h>
     
     
    int main()
    {   HANDLE mem;
    	char* buf;
    	char* nomdufile="c:\\a.txt";
        HANDLE file=CreateFile( nomdufile, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL );
         if( file == INVALID_HANDLE_VALUE )
        {
         printf("erreur lors de la creation du file\n" );
         return 1;
        }
        if ((mem = CreateFileMapping(file,    // use paging file
                     NULL,                    // default security
                     PAGE_READWRITE,          // read/write access
                     0,                       // maximum object size (high-order DWORD)
                     1024,                // maximum object size (low-order DWORD)
                     0))==NULL) {
            printf("erreur impossible de cree un fichier mapper");
    		return 1;
        }
     
        /*
         * On attache le segment dans la memoire.
         */
        if ((buf = (char *) MapViewOfFile(mem,   // handle to map object
                            FILE_MAP_ALL_ACCESS, // read/write permission
                            0,
                            0,
                            1024)) ==NULL ) {
            printf("erreur lors de la procedure de mappage du fichier a mapper");
    		CloseHandle(mem);
    		CloseHandle(file);
            return 0;
        }
    	fgets(buf,1024,stdin);
        UnmapViewOfFile(buf);
        CloseHandle(mem);
        return 1;
     
    }
    jusque là çà baigne mais le programme suivant fonctionne pas :
    serveur :
    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
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include <tchar.h>
     
    int main()
    {   char* nomdufile="c:\\a.txt";
    	char* buf;
        HANDLE file=OpenFileMapping(FILE_MAP_ALL_ACCESS,0,nomdufile);
    	if((buf=(char*) MapViewOfFile(file,FILE_MAP_ALL_ACCESS, 0,0,1024)) ==NULL ){
    	    printf("Erreur lors du mappage du file \n");
    		return 1;
    	}
    	while(*buf=='\0');
    	printf("%s",buf);					
        return 1;
    }
    le bug se fait au moment de la comparaison buff-NULL, son execution affiche l'erreur Erreur lors du mappage du file.
    Merci d'avance pour la réponse.

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 30
    Par défaut
    après maintes recherches, j'ai pu découvrir que le code d'erreur de la primite OpenFileMapping((FILE_MAP_ALL_ACCESS,FALSE,nomdufile1); est 3 qui veut dire que le système n'arrive pas à trouver le chemin du fichier ???
    C'est quoi ce problème.

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15
  3. Réponses: 1
    Dernier message: 23/06/2002, 00h15
  4. Pas de fork sous Windows?
    Par chezjm dans le forum POSIX
    Réponses: 8
    Dernier message: 11/06/2002, 12h15

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