direkt in Speicher schreiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
jhuber
User
Beiträge: 3
Registriert: Montag 20. September 2004, 10:26
Wohnort: Evenhausen

direkt in Speicher schreiben

Beitragvon jhuber » Dienstag 19. Oktober 2004, 15:01

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? :roll:

Danke schon mal...
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Dienstag 19. Oktober 2004, 15:30

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
joe

Re: direkt in Speicher schreiben

Beitragvon joe » Dienstag 19. Oktober 2004, 15:31

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
jhuber
User
Beiträge: 3
Registriert: Montag 20. September 2004, 10:26
Wohnort: Evenhausen

Beitragvon jhuber » Dienstag 19. Oktober 2004, 15:43

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.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Dienstag 19. Oktober 2004, 16:19

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

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Dienstag 19. Oktober 2004, 19:36

Wäre es nicht eleganter eine echte Interprozesskommunikation bspw. via Sockets zu machen, als im Speicher herumzupfuschen?

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
jhuber
User
Beiträge: 3
Registriert: Montag 20. September 2004, 10:26
Wohnort: Evenhausen

Beitragvon jhuber » Mittwoch 20. Oktober 2004, 06:54

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder