Joa. Aber welche Technik nutzt dann die REST-API, um Daten auszutauschen? Es soll ja auch auf Windows und Linux einigermaßen homogen funktionieren. Mit dem Memory Maping tut es das ja, ich habe nur ein paar Fallunterscheidungen beim Einbinden des Mappings. Das funktiuoniert ja auch - ich will nur die root-Rechte loswerden, die der Code im ersten Beitrag braucht, aber trotzdem auch keine physische Datei anlegen bzw. wieder löschen müssen, damit mmap geht.
Außerdem will ich Linux etwas unterstützen, denn es ist schon ein Nachteil dieses Betriebssystems, dass Dinge, die mit der Windows-API selbstverständlich sind, in Linux stundenlanges Lesen von verschiedenstsprachigen Forenbeiträgen erfordern und am Ende ist im jeweilligen Compiler ein bestimmer Befehl (wie shm_open) nicht implementiert. Der muss offenbar über einen Syscall ausgeführt werden, aber ich weiß nicht, wie ich das machen muss.
Für mein aktuelles Projekt wären Root-Rechte als Workaround in Ordnung. Ich will das Problem aber lösen, auch damit andere nicht an der gleichen Stelle hängen bleiben
Den Fehler zu suchen, habe ich aufgegeben. Es ist das altbekannte Bug, dass http_send bei Verwendung von https manchmal (damit meine ich bei jedem 10.000 Request) abschmiert. Umgekehrt greift der Hauptprozess auf diverse Hardware zu und man weiß ja, wie toll manche Treiber von no-name-Sensoren arbeiten. Auch hier ist zu erwarten, dass irgendwann eine Komponente nicht zuverlässig läuft. In diesem Fall könnte der Zweitprozess der Hauptprozess neu starten, damit die Erfassung nicht bis zum nächsten Neustart des Systems hängt. Die robusteste Lösung, die ich bislang gefunden habe, ist, dass Hauptprozess und Zweitprozess jezweils GetTickCounts in das Memory Mapping schreiben. Wenn ein Prozess nichts mehr tut, kann der andere den neu starten. Das ganze in einem Prozess mit mehreren Threads zu implementieren, hat sich als unbrauchbar erwiesen, da das Beenden eines Threads via Systembefehle oft auch zum Absturz des Prozesses fürt.