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 myvar
Variablen 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