Partage de variable entre plusieur programmes (filemapping)

Contenu du snippet

Ce code est seulement un petit exemple de partage d'une variable entre plusieur programme sous windows.

pour les tester il suffit d'en lancer plusieur et de taper un mot ou un nombre pour le mettre dans la variable partagée, PRINT ou 0 pour afficher cette dernière et EXIT ou 0 pour sortir.

Source / Exemple :


//////////////////////////////////////////////////////////////////////////////
// Premier exemple avec un partage d'une chaine de caractère
//////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <string.h>
#include <windows.h> // à ajouter pour l'utilisation

int main()
{
	//Creation d'un fichier MAP (nommé "filemap" dans cet exemple)
	HANDLE hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE,0,PAGE_READWRITE,0,0x4000,"filemap");
	// et initialisation d'une variable partagée
	char* mData = (char*)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);
	//initialise la variable au départ
	strcpy(mData,"NO_DATA");

	while (true)
	{
		char txt[0xFF];
		scanf("%s",&txt);

		if (strcmp(txt,"PRINT") == 0) // Si je tape PRINT: affiche la variable partagée
			printf("mData: %s\n",mData); 
		else if(strcmp(txt,"EXIT") == 0) // Si EXIT: quitte la boucle infinie
			break;
		else // sinon enregistre ce qu'on a tapé dans la variable partagée
			strcpy(mData,txt);
	}
	// Libère la mémoire et quitte le programme
	UnmapViewOfFile(mData);
	CloseHandle(hFileMap);

	return 0;
}

//////////////////////////////////////////////////////////////////////////////
// Second exemple avec un partage d'un nombre de type 'int'
//////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <string.h>
#include <windows.h>

int main()
{
	HANDLE hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE,0,PAGE_READWRITE,0,0x4000,"filemap");
	int* mData = (int*)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);

  • mData = 4;
while (true) { int txt; scanf("%d",&txt); if (txt == 0) printf("mData: %d\n",*mData); else if (txt == 1) break; else
  • mData = txt;
} UnmapViewOfFile(mData); CloseHandle(hFileMap); return 0; }

Conclusion :


Voici un code que l'on ma demandé donc donnez m'en des nouvelles pour me dire s'il répond à vos attentes. (Toutes critiques et note seront les bien venues)

Merci.

Bub325

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.