Seite 1 von 1
direkt in Speicher schreiben
Verfasst: Dienstag 19. Oktober 2004, 15:01
von jhuber
Hallo zusammen!
ich bin da auf ein kleines Problem gestoßen:
ich erhalte von einer Umgebung (von einem laufenden Prozeß) eine Adresse (z.B für eine Liste). Nun möchte ich in diese Liste vom Skript aus Werte anhängen, einfügen, usw.
vielleicht anschaulicher:
Code: Alles auswählen
...
dataPtr = IS.getDataPtr();
...
dataPtr[i] = value[k];
...
Meine Frage ist nun: gibt's da schon etwas brauchbares, hat jemand eine Idee, oder muß ich mir da doch selbst was basteln?
Danke schon mal...
Verfasst: Dienstag 19. Oktober 2004, 15:30
von rayo
von wo bekommst du die List? von einem Python-Programm?
Weil in Python kannst du nicht direkt in den Speicher schreiben, ausser vielleicht mit einem C-Module
gruss
Re: direkt in Speicher schreiben
Verfasst: Dienstag 19. Oktober 2004, 15:31
von joe
Hallo!
jhuber hat geschrieben:Code: Alles auswählen
...
dataPtr = IS.getDataPtr();
...
dataPtr[i] = value[k];
...
Was heißt "direkt im speicher"? Ich blick den kontext nicht so ganz.
Soll das überhaupt python sein? Die semikola wären überflüssig, aber ja nicht falsch. Wenn dataPtr eine referenz auf eine liste ist, kannst du natürlich mit append() was dranhängen.
joe
Verfasst: Dienstag 19. Oktober 2004, 15:43
von jhuber
Die Adresse bekomme ich von einem laufenden Programm. (wurde glaub ich mal in C geschrieben).
(das Code-Beispiel in meinem Beitrag ist in C++ geschrieben)
Wenn das von Python aus nicht geht, dann bleibt mir nichts anderes übrig als das selbst zu striken (über ein C-Module)
"direkt in den Speicher" soll bedeuten in einen Speicherbereich zu dem andere Programme (C, C++, was weiß ich noch alles aber nicht Python)
auch Zugriff haben.
Verfasst: Dienstag 19. Oktober 2004, 16:19
von Dookie
Hi jhuber,
da wirst du um ein kleines C-Modul nicht herumkommen. Das ist so aus gutem Grund mit Python nicht möglich, woher soll Python denn wissen, wie groß der Bereich ist, damit es nicht über das Ende hinausschreibt?
Seit Python2.3 ist es aber recht easy sich so ein Modul mit einer entsprechenden Funktion selber zu schreiben.
http://docs.python.org/api/api.html
Die Sicherheitsabfragen, um nicht über den Bereich hinaus oder gar in einen falschen Bereich zu schreiben musst Du dann aber auch selber machen.
Gruß
Dookie
Verfasst: Dienstag 19. Oktober 2004, 19:36
von fs111
Wäre es nicht eleganter eine echte Interprozesskommunikation bspw. via Sockets zu machen, als im Speicher herumzupfuschen?
fs111
Verfasst: Mittwoch 20. Oktober 2004, 06:54
von jhuber
fs111 hat geschrieben:Wäre es nicht eleganter eine echte Interprozesskommunikation bspw. via Sockets zu machen, als im Speicher herumzupfuschen?
Mag sein, aber ich muß mich an das gegebene richten, und die Umgebung mit der ich kommunizieren muß, existiert ja schon.