Hallo liebes Forum,
ich hätte eine Frage....
Wie kann ich in den memory des eigenen Prozesses schreiben?
(Auf eine bestimmt Adresse)
In C++ geht das so: "*(char*)0x800000 = "Dieser Text steht im Speicher";
Ich hoffe ihr versteht wie es gemeint ist und wisst eine Lösung.
Danke und liebe Grüße.
In Memory schreiben
-
sandmann016
- User
- Beiträge: 3
- Registriert: Freitag 11. Mai 2012, 16:49
Das ist expizit nur diese eine Funktion, denn dieses Script/Programm mit einem C++ Programm kommunizieren.
Hätten Sie dazu vielleicht eine andere Möglichkeit auf lager? (FileSpeichern darf ich nicht verwenden | Registry auch nicht)
Es darf auch die Win32Api angesprochen werden... es wäre kein Problem... nur mir fehlt die Idee der Kommunikation....
Hätten Sie dazu vielleicht eine andere Möglichkeit auf lager? (FileSpeichern darf ich nicht verwenden | Registry auch nicht)
Es darf auch die Win32Api angesprochen werden... es wäre kein Problem... nur mir fehlt die Idee der Kommunikation....
Python versucht aus gutem Grund, die maschinenahen Dinge zu verbergen. Dh. aber nicht, dass sowas (mit Einschränkungen) nicht trotzdem geht. Z.B. erlauben buffer und memoryview eine direkte Manipulation zusammenhängender Speicherbereiche. Und mit ctypes schließlich stehen hier alle Türen offen.
Zur IPC sind Speicherbereiche eines Prozesses nicht geeignet, da diese OSseitig geschützt werden. Allerdings bieten alle modernen OS shared memory Funktionalität an, um dieses Problem zu umschiffen. Hierfür gibt es in Python u.a. das Modul mmap. Für IPC sind des weiteren interessant:
- fifos / named pipes
- sockets / Netzwerkstack
Letzteres mag zwar für geringe Anforderungen viel Overhead mitschleppen, ist aber gut standardisiert und weniger fehlerträchtig als die anderen Varianten und auch nicht schwieriger nachzurüsten.
Zur IPC sind Speicherbereiche eines Prozesses nicht geeignet, da diese OSseitig geschützt werden. Allerdings bieten alle modernen OS shared memory Funktionalität an, um dieses Problem zu umschiffen. Hierfür gibt es in Python u.a. das Modul mmap. Für IPC sind des weiteren interessant:
- fifos / named pipes
- sockets / Netzwerkstack
Letzteres mag zwar für geringe Anforderungen viel Overhead mitschleppen, ist aber gut standardisiert und weniger fehlerträchtig als die anderen Varianten und auch nicht schwieriger nachzurüsten.
-
BlackJack
@sandmann016: Mit dem `ctypes`-Modul kann man im eigenen Prozessadressraum wüten wie man das mit C auch tun könnte.
Wenn Du mit einem C- oder C++-Programm komminizieren willst, dann ist das doch aber nicht der gleiche Prozess‽
Da könnte man eventuell etwas mit dem `mmap`-Modul machen.
Wenn Du mit einem C- oder C++-Programm komminizieren willst, dann ist das doch aber nicht der gleiche Prozess‽
Da könnte man eventuell etwas mit dem `mmap`-Modul machen.
-
sandmann016
- User
- Beiträge: 3
- Registriert: Freitag 11. Mai 2012, 16:49
Es ist allerdings der eingene Prozess
(Python ist ein Prozess und C++ ist ein anderer Prozess...sorry wenn es ein missverständniss gab).
Das C++ Programm führt bestimmte Python-Befehle aus mithilfe eines Detours im Python Prozess.
Nunja ich bedanke mich vielmals für den Tipp mit ctypes ich werde mich jetzt mit dem Thema befassen...
cyA
Das C++ Programm führt bestimmte Python-Befehle aus mithilfe eines Detours im Python Prozess.
Nunja ich bedanke mich vielmals für den Tipp mit ctypes ich werde mich jetzt mit dem Thema befassen...
cyA
