ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
901
901
EMPFEHLEN
-
15.12.09 15:30 #1
- Registriert seit
- Jul 2006
- Beiträge
- 9
Hi Leute,
ich hänge hier gerade an einer richtig kniffligen Sache..... vielleicht kann mir da einer von Euch ein paar Tipps geben, wäre super
Also ein bestehendes C-Programm öffnet einen Shared-Memory Bereich im Hauptspeicher und erstellt darin eine Struktur. Diese Struktur beinhaltet verschiedene Variablen.
Beispiel:Code c:1 2 3 4 5
typedef struct { int aaa; string bbb; char ccc[16]; } SM_Struct;
Ich muss jetzt aus PHP heraus auf diesen erstellte Shared Memory Bereich zugreifen und die Variablen innerhalb der C-Struktur lesen und auch ändern.
Den Zugriff auf ein Shared Memory in php hab ich schon:
aber damit hab ich noch immer keinen Zugriff auf die Struktur bzw. die Variablen darin.....PHP-Code:// Create 100 byte shared memory block with system id of 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
// Get shared memory block's size
$shm_size = shmop_size($shm_id);
Da dieses Programm wirklich ziemlich wichtig ist und ich gerade so ziemlich in der Luft hänge würde ich mich über jede Hilfe, Tipp, Ansatz, ... sehr freuen!
Danke schon im Voraus.
MfG
-
Moin,
ich glaube, du müsstest dort die Daten in einem Format hinterlegen, mit dem PHP etwas anfangen kann.
JSON dürfte sich da anbieten.
-
16.12.09 12:19 #3
- Registriert seit
- Jul 2006
- Beiträge
- 9
Moin Sven,
was meinst Du genau in einem Format mit dem PHP was anfangen kann?
Kann PHP nicht auf von C/C++ gesetzte Variablen zugreifen? Gibt es da Unterschiede bei int/long/double/string zu PHP
Bei PHP gibt es doch wenn ich das bisher richtig gelesen hab auch struct...... aber irgendwie scheint mir das wohl was anderes zu sein als eine C-Struct.....
Ein weiteres Problem ist auch, dass es möglichst ohne Änderung am bestehenden C-Programm laufen sollte.
Im Extremfall wenn nichts anderes mehr geht wäre das auch evtl. denkbar...... aber wäre dann eben ein schon ziemlich großer Aufwand..... wie würde das denn dann mit JSON funktionieren? Das Ding ist ich muss es ja lesen, ändern und wieder zurückschreiben können...... wäre das überhaupt mit JSON machbar
Danke & Gruß
-
shmop_read() liefert einen String....keine Variablen.
Daher auch der Vorschlag mit JSON, da es dazu geeignet ist, Datenstrukturen sprachunabhängig als String zu speichern.
Was da lesen/schreiben etc. anbelangt, in PHP geht das recht unproblematisch.
Du kannst JSON-Strings dekodieren per json_decode()
Dann änderst du die Daten nach Gusto und erstellst wieder den String zum zurückschreiben-> json_encode()
Ob das in C von Hause aus ähnlich einfach möglich ist, weiss ich nicht, aber passende Hilfsmittel findest du unter http://www.json.org/json-de.html
-
05.01.10 17:08 #5
- Registriert seit
- Jul 2006
- Beiträge
- 9
Ein frohes neues Jahr

Ich sitze jetzt wieder an meinem Shared-Memory und hab mir jetzt auch mal JSON angeschaut. also das sieht ja schon mal ganz vielversprechend aus denk.naja auch wenn ich bis jetzt da noch nicht wirklich richtig durchblicke.
Also auf der Seite ist ja für jede Sprache Bibliotheken verfügbar.
Jetzt weiß ich aber nicht so genau welches für mich das richtige ist. Es handelt sich hier zwar um eine C-Struktur. aber das ganze wird als cpp gespeichert, d.h. C++.
Zitat von www.json.org/json-de.html
hab gedacht komm, schau ich mir mal die C-Bibliothek an. was jetzt der Unterschied zwischen JSON parser, json-c, M's JSON parser, YAJL, cJSON und Jansson ist, ist mir nicht wirklich klar.
Welches ist denn zu empfehlen und warum
Gibt es vielleicht irgendwo im Internet Tutorials oder Beispiele wie man eine solche Struktur mit JSON encodieren/decodieren kann
Meintest Du unproblematisch lesen/schreiben mit PHP wegen dem JSON oder Zugriff aufs Shared Memory
Würde mich über jeden Link oder Hilfe sehr freuen
Danke, Viele Grüße
-
05.01.10 17:31 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Wenn dir das mit dem JSON zu kompliziert ist, kannst vielleicht mit dem Overhead von XML leben? libxml2 ist dein Freund. PHP kann es, C kann es. Die Implementierung ist somit nicht die schwierigste Sache der Welt. Wie gesagt, wenn du mit dem Overhead von XML leben kannst
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
05.01.10 17:37 #7
- Registriert seit
- Jul 2006
- Beiträge
- 9
Hi,
was meinst Du mit overhead? Die Tags die auf- und zugemacht werden bei xml
JSON ist aber im allgemeinen für so etwas schon besser geeignet, oder
Mir ist eingefallen ich habe schon mal was mit JSON gemacht...... schon länger her und das war auch von PHP zu JavaScript.....
also ich würde mich da prinzipiell schon mal rantrauen...... (mit etwas Start-HIlfe von Euch vielleicht *gg*)
-
05.01.10 20:11 #8
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Ok, dann will ich mal meine Meinung (nur Meinung, da ich die angegebenen Libs nicht detailiert kenne) zum Besten geben:
1. Nur Parser bringt dir nichts, du brauchst auch einen Encoder, zu mindest, wenn du bi-direktional Daten austauschen willst. Das heißt
JSON_checker
JSON parser
M's JSON parser
cJSON
fallen schon mal aus.
2. json-c würde ich aus Gründen der Code-Qualität außen vor lassen. Auf Anhieb aufgefallen waren mir malloc()'s die nicht freigegeben werden.
Ich würde aus YAJL und Jansson mir einen aussuchen und zwar den, bei denen die Beispiele am leichtesten nachzuvollziehen sind und überhaupt erstmal funktionieren. Persönlich würde ich zu Jansson tendieren, kann aber nicht sagen warum. Rein vom Gefühl her... Dokumentiert sind beide anscheinend gut.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
Shared Memory in DLLs
Von Cromon im Forum C/C++Antworten: 3Letzter Beitrag: 17.04.10, 19:51 -
Shared Memory
Von martinpriebe im Forum .NET CaféAntworten: 9Letzter Beitrag: 02.07.08, 09:01 -
Shared Memory unter C#
Von Zero_Base im Forum .NET CaféAntworten: 2Letzter Beitrag: 02.04.06, 12:33 -
Shared Memory Graka
Von redX im Forum HardwareAntworten: 3Letzter Beitrag: 13.09.05, 22:34 -
shared memory
Von seydou im Forum Linux & UnixAntworten: 1Letzter Beitrag: 10.02.05, 20:16





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren