Partage
  • Partager sur Facebook
  • Partager sur Twitter

communication inter processus

    24 juin 2019 à 17:17:17

    Bonjours a tous,

    je travaille sur les thread et les processus  .

    pour les thread il n'y a pas de problème , mais pour le processus c'est différent, j'arrive a les crée a les faites attendre mais impossible de partager de la mémoire ou des signaux je suis sous Windows , je regarderai Linux plus tard  .

    j'aimerai ne pas passer pas un fichier que l'utilisateur pourrai voir ou supprimée n'y avec des Socket .

    je pence que les pipes pourrai fonctionnaire mais je ne c'est pas comment ce fonctionne n'y sur Windows comment savoir si c'est un parent ou un enfant .

    Merci d'avance pour votre aide .

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2019 à 17:33:04

      Pour la mémoire partagé sous windows tu peux allé voir du coté de : File Mapping
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2019 à 18:17:33

        Je n'aime pas ce qui est partagé, car après il faut synchroniser, locker... et ... pourquoi paralléliser alors?

        Bref. Faut voir le type d'échanges que tu veux réaliser.

        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          24 juin 2019 à 18:38:37

          #define GLOBAL_OBJECT	"Global\\MyObject" //Elevated token only : Administators || Services account
          #define LOCAL			"MyObject"
          
          struct sObj
          {
          	BOOL a;
          	PVOID b;
          	LONG c;
          };
          
          VOID Map()
          {
          	HANDLE hFile = CreateFileMapping(NULL, NULL, PAGE_READWRITE, 0, sizeof(sObj), (LPCWSTR)LOCAL);
          	DWORD ret = GetLastError();
          
          	if (ret != ERROR_SUCCESS)
          	{
          		if (ret == ERROR_ALREADY_EXISTS)
          			printf_s("object already exists");
          		else
          		{
          			printf_s("CreateFileMapping error %d", ret);
          			return;
          		}
          	}
          
          	sObj* MyObj = (sObj*)MapViewOfFile(hFile, FILE_MAP_READ, 0, 0, 0);
          	if (!MyObj)
          	{
          		printf_s("ERROR code : %d", GetLastError());
          	}
          }
          
          VOID UnMap()
          {
          	HANDLE hFile = OpenFileMapping(FILE_MAP_READ, FALSE, (LPCWSTR)LOCAL);
          	if (!hFile)
          	{
          		printf_s("OpenFileMapping error %d", GetLastError());
          		return;
          	}
          
          	sObj* MyObj = (sObj*)MapViewOfFile(hFile, FILE_MAP_READ, 0, 0, 0);
          	if (!MyObj)
          	{
          		printf_s("ERROR code : %d", GetLastError());
          	}
          }

           Une petite dose d'hérésie...

          -
          Edité par LilyKianii 24 juin 2019 à 21:29:40

          • Partager sur Facebook
          • Partager sur Twitter

          communication inter processus

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown