Guten Morgen!
Ich habe folgendes Problem:
Programmierung WinAPI über C++
Ich erzeuge drei Prozesse:
- Prozess erzeugt die zwei Semaphoren(CreateSemaphore), die beiden anderen Prozesse (CreateProcess)
und einen Ringpuffer den ich mittels FileMapping an die beiden anderen Prozesse übergebe. - Erzeugerprozess
- Verbraucherprozess
Ich weiß wie ich mit Semas innerhalb eines Prozesses mit mehreren Threads umgehen kann(Erzeuger-Verbraucher-Problem innerhalb eines Prozesses habe ich schon programmiert!)… aber ich weiß nicht, wie ich mit Semas über mehrere Prozesse umgehen muss, geschweige denn, wie ich den Ringpuffer per FileMapping übergeben muss.
Mein 1. Prozess meldet keine Fehler meine beiden anderen Prozesse
melden exakt 11 Fehler(ziemlich ähnliche):
process2.cpp(22) : error C2065: ‚r_buffer‘ : nichtdeklarierter Bezeichner
process2.cpp(22) : error C2065: ‚ring‘ : nichtdeklarierter Bezeichner
process2.cpp(22) : error C2440: ‚=‘ : ‚struct main::r_buffer *‘ kann nicht in ‚int‘ konvertiert werden. Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
process2.cpp(25) : error C2065: ‚flag‘ : nichtdeklarierter Bezeichner
process2.cpp(25) : warning C4805: ‚==‘ : unsichere Kombination von Typ ‚int‘ mit Typ ‚const bool‘ in einer Operation
process2.cpp(27) : error C2065: ‚voll‘ : nichtdeklarierter Bezeichner
process2.cpp(28) : error C2227: Der linke Teil von ‚->buffer‘ muss auf Klasse/Struktur/Union zeigen
process2.cpp(28) : error C2227: Der linke Teil von ‚->nextFull‘ muss auf Klasse/Struktur/Union zeigen
process2.cpp(29) : error C2227: Der linke Teil von ‚->buffer‘ muss auf Klasse/Struktur/Union zeigen
process2.cpp(30) : error C2227: Der linke Teil von ‚->nextFull‘ muss auf Klasse/Struktur/Union zeigen
process2.cpp(30) : error C2227: Der linke Teil von ‚->nextFull‘ muss auf Klasse/Struktur/Union zeigen
F:\BS\WORK_UB6\process2\process2.cpp(31) : error C2065: ‚leer‘ : nichtdeklarierter Bezeichner
leer ist Sema1, das ich mit dem Erzeugerprozess fülle (voll ist das Gegenstück).
nextFull zeigt mir den nächsten freien Platz im Puffer an
und nextEmpty den nächsten Leeren.
Die Handles, den Puffer und das flag habe ich außerhalb der main-Schleife im ersten Prozess erzeugt und dachte, das würde genügen um damit in den anderen Prozessen handeln zu können. Leider ist dem nicht so. Wie übergebe ich also diese Bauteile?
Bevor ich hier den ganzen Code rein setze frage ich lieber erst mal
nach, ob man aus den obigen Angaben eine Hilfestellung geben kann.
Ich bedanke mich jetzt schon für jede Hilfe!
GrüsSE San Sebastian