Bonjour,
j'essaie de programmer une mémoire partagée entre deux shells(msys) sous windows, j'arrive à faire le code du client mais dans le code du serveur,il y a une erreur.
code client :
[CODE]#include <windows.h>
- include <stdio.h>
- include <conio.h>
int main()
{ HANDLE mem;
char* buf;
char* nomdufile="c:\\a.txt";
HANDLE file=CreateFile( nomdufile, FILE_MAP_ALL_ACCESS, 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(file);*/
return 1;
}
[\CODE]
code serveur:
[CODE]#include <windows.h>
- include <stdio.h>
- include <conio.h>
int main()
{ char* nomdufile1="c:\\a.txt";
char* buf1;
HANDLE
file=OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,nom
dufile1);
if(file==NULL){
printf("windows pu\n");
return 1;
}
if((buf1=(char*) MapViewOfFile(file,FILE_MAP_ALL_ACCESS, 0,0,1024)) ==NULL ){/*l'erreur se trouve là*/
printf("Erreur lors du mappage du file \n");
return 1;
}
while(*buf1=='\0');
printf("%s",buf1);
/*UnmapViewOfFile(buf1);
CloseHandle(file1);*/
return 1;
}
[\CODE]
Merci d'avance pour la réponse.