Frage

Ich habe eine Zählvariable, die von ein paar Prozesse gezählt ich gegabelt und gebraucht / lesen von der Mutter Prozess bekommen sollte.

Ich habe versucht, einen Zeiger in meiner main () Funktion des Mutterprozesses zu erstellen und diese Zeiger nach oben in den gegabelten Kindern zählt. Das funktioniert nicht! Jedes Kind scheint seine eigene Kopie zu haben, selbst wenn die Adresse die gleiche in jedem Prozess ist.

Was ist der beste Weg, das zu tun?

War es hilfreich?

Lösung

Jedes Kind seine eigene Kopie des übergeordneten Prozess Speichers wird (zumindest sobald es etwas ändern Trys). Wenn Sie betweeen Prozesse teilen müssen benötigen Sie Shared Memory oder einem ähnlichen IPC-Mechanismus suchen.

BTW, warum machen Sie dies ein Community Wiki -. Sie Antworten zu begrenzen werden, um, indem Sie

Andere Tipps

2 Prozesse können nicht den gleichen Speicher gemeinsam nutzen. Es ist wahr, dass ein gegabelter Kind-Prozess den gleichen zugrunde liegenden Speicher nach Forking teilen, aber ein Versuch, dies würde dazu führen, das Betriebssystem für sie woanders ein neue beschreibbaren Speicherplatz zuweisen zu schreiben.

Schauen Sie in eine andere Form von IPC zu verwenden.

Meine Erfahrung ist, dass, wenn Sie Informationen zwischen mindestens zwei Prozesse gemeinsam nutzen möchten, können Sie fast nie nur einige void * Zeiger in den Speicher gemeinsam nutzen möchten. Vielleicht haben Sie einen Blick auf

haben wollen

Erhöhung Inter

, die Ihnen eine Idee geben, wie strukturierte Daten zu teilen (sprich: „Klassen“ und „Strukturen“) zwischen Prozessen.

Nein, verwenden IPC oder Threads. Nur Filedeskriptoren gemeinsam genutzt werden (aber nicht die Suchzeiger).

Sie möchten vielleicht gemeinsam benutzten Speicher überprüfen.

die Zeiger sind immer liegen im gleichen Prozess. Es ist privat auf den Prozess, in Bezug auf die Basisadresse des Prozesses. Es gibt verschiedene Arten von IPC-Mechanismen in allen Betriebssystemen. Sie können für Windows Messaging, Shared Memory entscheiden, Buchse, Rohre usw. Wählen Sie eine entsprechend Ihrer Anforderung und Größe der Daten. Ein weiterer Mechanismus ist, Daten in Zielprozess unter Verwendung der virtuellen Speicher APIs zur Verfügung zu schreiben und den Prozess mit entsprechenden Zeigern benachrichtigen.

Eine einfache Möglichkeit, aber begrenzte Form von IPC, die gut für eine gemeinsame Zählung arbeiten würden, ist ein ‚gemeinsames Datensegment‘. Unter Windows ist dies mit der #pragma data_seg Richtlinie umgesetzt.

Sehen Sie diesen Artikel Beispiel rel="nofollow.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top