4 Stimmen

Sprache C: Wie kann man eine Struktur (oder, falls dies nicht möglich ist, ein Array) zwischen Eltern- und Kindprozessen (Forked) über IPC gemeinsam nutzen?

Ich habe in den letzten zwei Wochen danach gegoogelt und keine Antwort bekommen. Dies ist, was ich habe:

  • Ein übergeordneter Prozess, der eine Struktur erstellt myStruct das ist im Grunde eine verknüpfte Liste mit Zeigern (wenn dies ein großes Problem ist, kann ich akzeptieren, um eine feste Größe Array stattdessen verwenden).

  • Eine feste Anzahl von Kindprozessen, die mit fork() die einen Lese-/Schreibzugriff auf die vom Elternteil erstellte Struktur (oder das Array) benötigen.

Ich weiß nicht, was ich tun muss, um die Variable myStruct zwischen Prozessen geteilt werden.

Ich habe versucht, das Problem mit SysV IPC-Funktionen zu lösen, wie shmget() , shmat() usw..., um meine Variable im gemeinsamen Speicher zuzuweisen, aber ich weiß nicht, wie man mit ungültigen Speicherzeigern arbeitet, um die Werte in myStruct zu lesen/schreiben.

Idealerweise würde ich gerne die Punktnotation verwenden können (myStruct.node)->attribute = value in jedem Prozess, ohne sich mit Zeigern beschäftigen zu müssen, da ich nicht weiß, wie meine Struktur im Speicher organisiert ist.

Ist das möglich? Könnte jemand von Ihnen bitte helfen? Jede Hilfe ist WIRKLICH willkommen.

Weitere Anmerkung: Ich weiß, dass die Verwendung von Threads, Pipes, Sockets oder ähnlichem viel einfacher wäre, aber diese Arbeit ist für akademische Zwecke, für die ich das Vorhandensein mehrerer unabhängiger Prozesse simulieren muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X