GOOGLE ADS

Freitag, 22. April 2022

So lesen Sie Daten in einer bestimmten Speicheradresse in C++

Ich habe eine Integer-Variable mit dem folgenden Code in first.cpp erstellt:

#include <iostream>
using namespace std;
int main()
{
int myvar = 10;
cout << &myvar;
// I only need two steps above.
// The following steps are coded to make this program run continuously.
cout << "Enter your name" << endl;
string name;
cin >> name;
return 0;
}

Ausgabe von first.cpp ist:

>0x6dfed4

Während das obige Programm läuft, führe ich auch das folgende Programm in second.cpp aus:

#include <iostream>
using namespace std;
int main()
{
// I this program I want to read the content in myvar variable in first.cpp
// How to do it?
}

Mit dem zweiten Programm möchte ich den Inhalt der myvarVariablen in first.cpp lesen.

Wie es geht?

Danke.


Lösung des Problems

Um meinen obigen Kommentar weiter auszuführen:

Wie ich geschrieben habe, wird jedes Programm in einem anderen Prozess ausgeführt. Jeder Prozess hat einen separaten Adressraum. Daher macht es keinen Sinn, die Adresse einer Variablen in einem anderen Prozess zu verwenden.

Um zwischen Prozessen zu kommunizieren, benötigen Sie eine Art IPC (Inter-Process-Communication):
Inter-Process-Communication

Wenn Sie nur eine Variable gemeinsam nutzen müssen, fällt Ihnen als erstes ein, Shared Memory zu verwenden:
Shared Memory

Shared-Memory ist sehr stark vom Betriebssystem abhängig. Sie haben nicht erwähnt, welches Betriebssystem Sie verwenden. Unter Windows können Sie die Win-API zum Verwalten des gemeinsamen Speichers verwenden:
Gemeinsamer Windows-Speicher

Es gibt ein Äquivalent unter Linux, aber ich bin mit den Details nicht vertraut.

Alternativ können Sie die plattformübergreifende Boost-Lösung verwenden:
Boost Shared Memory

Wenn Sie sich damit befassen, wird klar, dass diese Art von Lösungen mit einigen Komplikationen einhergeht.

Die Frage ist also, warum muss man das tun? Vielleicht gibt es eine bessere Lösung für Ihr Problem (Sie haben nicht beschrieben, was es eigentlich ist, also kann ich nicht viel mehr sagen).

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...