<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[C-Funktionen nach C++ portieren und instanziieren]]></title><description><![CDATA[<p>Hallo,<br />
habe ein C-Projekt, das auf einem Mikrocontroller läuft in eine C++-Umgebung eingebunden, damit ich diese als Emulator benutzen kann.<br />
Soweit funktionierts.<br />
Jetzt möchte ich aber in meinem C++-Programm mehrere Instanzen meines C-Projektes laufen lassen...<br />
Bisher habe ich eine Klasse Emulator von der Objekte erzeugt werden können und dann mein C-Programm mit Aufruf der Funktion main() ausführen. Allerdings werden diese C-Funktionen als &quot;static&quot; aufgerufen, d.h. jedes Emulator-Objekt greift auf dieselben Adressen zu.</p>
<p>Wie kann ich mein C-Projekt &quot;importieren&quot;, dass jeder Emulator sein C-Programm starten kann.<br />
Geht das vielleicht in den Funktionsdeklarationen? Das C-Projekt ist ziemlich umfangreich und importiert so ca. 50 Files.</p>
<p>Für Tips wäre ich sehr dankbar.</p>
<p>Grüße Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295778/c-funktionen-nach-c-portieren-und-instanziieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 06:42:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295778.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Nov 2011 17:35:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 17:35:19 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe ein C-Projekt, das auf einem Mikrocontroller läuft in eine C++-Umgebung eingebunden, damit ich diese als Emulator benutzen kann.<br />
Soweit funktionierts.<br />
Jetzt möchte ich aber in meinem C++-Programm mehrere Instanzen meines C-Projektes laufen lassen...<br />
Bisher habe ich eine Klasse Emulator von der Objekte erzeugt werden können und dann mein C-Programm mit Aufruf der Funktion main() ausführen. Allerdings werden diese C-Funktionen als &quot;static&quot; aufgerufen, d.h. jedes Emulator-Objekt greift auf dieselben Adressen zu.</p>
<p>Wie kann ich mein C-Projekt &quot;importieren&quot;, dass jeder Emulator sein C-Programm starten kann.<br />
Geht das vielleicht in den Funktionsdeklarationen? Das C-Projekt ist ziemlich umfangreich und importiert so ca. 50 Files.</p>
<p>Für Tips wäre ich sehr dankbar.</p>
<p>Grüße Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147051</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 17:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 17:41:53 GMT]]></title><description><![CDATA[<p>Da sind eindeutig mehr Informationen nötig. Zum Beispiel: Was macht dein C++-Programm überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147054</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 21 Nov 2011 17:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 19:43:07 GMT]]></title><description><![CDATA[<p>das C++ Programm ist ein MDI-Framework (weniger wichtig).<br />
Ich erzeuge eine Emulator-Instanz (der Emulator-Klasse) und dieses Objekt startet derzeit die main() des C-Projekts und visualisiert ein paar Daten des C-Projekts in einem Window:</p>
<p>In diesem C-Projekt sind natürlich Datenfelder definiert (structs, Variablen, ...).<br />
Wenn ich jetzt eine 2. Emulator-Instanz starte, die dann wieder die main()-Methode des C-Projekts aufruft, greift diese auf dieselben Daten des C-Projekts zu, wie das zuerst erzeugte Objekt.<br />
Das soll aber so nicht sein...</p>
<p>Jetzt bin ich auf der Suche nach einer einfachen Lösung, ohne mein C-Projekt nach C++ portieren zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147088</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 19:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 19:53:41 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Entweder verstehe ich da gerade etwas anders als du es meinst oder du hast da den Oberbug aller Zeiten gefunden. Daher vermutlich ersteres. Wie rufst du das C-Programm denn auf? Heißt das etwa, dass das C-Programm kein eigenes Programm ist, sondern in dein C+-Programm eincompiliert wird? Falls letzteres: Tja, so ist das nun einmal, wenn man Nicht-Reentrant-Code mehrmals parallel aufruft. Liegt dann irgendwo zwischen &quot;Selbst schuld!&quot; und &quot;Was hast du erwartet?&quot;.</p>
<p>Allgemeine Abhilfe wäre jedenfalls, das C-Programm in einem eigenen Prozess laufen zu lassen, statt in einem Thread, wie du es anscheinend jetzt machst. Wie das mit Prozessen&amp;Co geht, ist jedoch stark betriebssystemabhängig, da müsstest du uns deine Plattform verraten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147091</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 21 Nov 2011 19:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 21:56:22 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> natürlich &quot;selbst schuld&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
ich compiliere das C-Projekt in das C++-Projekt, um im Emulator besser weiterentwickeln zu können.<br />
nun wollte ich das ganze eben soweit erweitern, dass mehrere &quot;C-Projekt&quot;-Instanzen parallel laufen.</p>
<p>Du hast richtig eingeschätzt, dass ich das ganze derzeit in einem Thread laufen lasse, um auf die Daten (Visualisierung) zugreifen zu können.<br />
Würde das bei einem Prozess auch noch gehen? Wohl nicht direkt oder?</p>
<p>Meine Plattform ist Windows (hier Win7), Visual Studio 2008 und 2010</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147181</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 21:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:07:30 GMT]]></title><description><![CDATA[<p>Wenn das C-Programm von globalen Daten abhängt, wird das nicht möglich sein, da es von denen innerhalb deiner exe eben nur eine Instanz gibt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147187</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:07:30 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:19:06 GMT]]></title><description><![CDATA[<p>Das C-Programm hat &quot;intern&quot; globale Daten,<br />
genau diese hätte ich gerne aber in meinem C++-Tool instanziiert.</p>
<p>Gibt es da keine Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147196</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:25:27 GMT]]></title><description><![CDATA[<p>jcp1978 schrieb:</p>
<blockquote>
<p>Gibt es da keine Möglichkeit?</p>
</blockquote>
<p>Gibt es: Das C Programm so umschreiben, dass es eben keine globalen Daten verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147197</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:29:52 GMT]]></title><description><![CDATA[<blockquote>
<p>jcp1978 schrieb:<br />
Gibt es da keine Möglichkeit?</p>
<p>Gibt es: Das C Programm so umschreiben, dass es eben keine globalen Daten verwendet.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> das scheidet leider aus<br />
das C-Programm läuft so wie es ist auf einem Mikroprozessor,<br />
da macht es wenig Sinn, das dort zu ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147199</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:31:17 GMT]]></title><description><![CDATA[<p>Wieso musst du eigentlich im selben Prozess mehrere &quot;Instanzen&quot; dieses C-Programms haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147200</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:39:18 GMT]]></title><description><![CDATA[<p>Weil dann der Datenaustausch ziemlich einfach zu realisieren ist/wäre.<br />
Im Mikroprozessor kommunizieren die &quot;C-Prozesse&quot; jeweils über CAN.<br />
Hier in meinem Emulator wäre es einfach den CAN-Bus zu simulieren und die einzelen Instanzen untereinander zu &quot;verbinden&quot;.<br />
Das wäre zwar auch zwischen Prozessen möglich, aber ich denke nicht ganz so einfach...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147201</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:41:01 GMT]]></title><description><![CDATA[<p>Es wäre wohl nicht ganz so einfach, dafür aber überhaupt erstmal möglich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147202</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 22:45:14 GMT]]></title><description><![CDATA[<p>ich hatte da bei einem anderen Projekt schonmal mit SharedMem zu tun, das ist nicht das Problem...<br />
eher, es ist einfacher n Threads zu verwalten, als n Prozesse</p>
<p>deshalb mein Ansatz, aber scheinbar leider eine Sackgasse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147204</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 22:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 23:01:46 GMT]]></title><description><![CDATA[<p>Naja, es ist technisch nicht unmöglich. Aber wenn du das C-Programm nicht verändern kannst (man könnte einen Metacompiler schreiben der das C-Programm eben in eine C++ Klasse wrapped oder zumindest globale Variablen threadlocal macht, sodass man dann eben pro Instanz einen Thread hat), dann sind mehrere Prozesse wohl die einfachste Lösung. Wenn du für die Kommunikation sowieso einen Bus modellieren willst, dann dürfte das z.B. über Pipes wohl auch nicht so besonders kompliziert zu implementieren sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147209</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 23:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 23:00:48 GMT]]></title><description><![CDATA[<p>wie würde so ein wrapper in etwa aussehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147210</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Mon, 21 Nov 2011 23:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 23:02:24 GMT]]></title><description><![CDATA[<p>Na so wie dein C++ Programm ihn haben will^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147211</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 21 Nov 2011 23:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Mon, 21 Nov 2011 23:09:29 GMT]]></title><description><![CDATA[<p>Interprozesskommunikation ist keine Raketenwissenschaft. Es ist nicht ganz so einfach wie Interthreadkommunikation, aber nicht vor dem man Berührungsängste haben müsste. Pipes wurden dir schon genannt, wenn du es eine Portion abstrakter haben möchtest, kannst du dir ja mal MPI angucken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147212</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 21 Nov 2011 23:09:29 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Tue, 22 Nov 2011 01:09:35 GMT]]></title><description><![CDATA[<p>jcp1978 schrieb:</p>
<blockquote>
<p>Das C-Programm hat &quot;intern&quot; globale Daten,<br />
genau diese hätte ich gerne aber in meinem C++-Tool instanziiert.</p>
<p>Gibt es da keine Möglichkeit?</p>
</blockquote>
<p>Jain.<br />
Du kannst jedes deiner C-Projekte zu einer DLL compilieren.<br />
Dann kannst du unterschiedliche C-Projekte (=unterschiedliche DLLs) nebeneinander laufen lassen. Jede DLL hat eigene Kopien globaler Variablen, also ist alles gut.</p>
<p>Was damit nicht geht: du kannst so nicht mehrere Instanzen des selben C-Projekts in deinem Emulator laufen lassen. Die globalen Variablen eines einzelnen Projekts sind ja immer noch nur 1x vorhanden.</p>
<p>Wobei man selbst das mit einem Trick (Hack) umgehen könnte: schreib dir einen &quot;Loader&quot;, der die DLL erstmal in irgendein Temp-Verzeichnis kopiert, und ihr dabei einen eindeutigen (im Sinn von &quot;unique&quot;) Namen verpasst (GUID oder was auch immer). Die Kopie der DLL lädst du dann mit LoadLibrary.<br />
Wenn ich mich nicht sehr sehr täusche, hätte dann wieder jede Kopie der DLL ihre eigenen globalen Variablen.<br />
Pro Instanz eines Programms die du laufen lassen willst, müsstest du dann eine neue Kopie erzeugen und laden.</p>
<p>Da du die DLLs dann mit LoadLibrary lädst, musst du dir alle Funktionen die du in den DLLs aufrufen willst mit GetProcAddress holen. Bei vielen Funktionen kann das viel lästig werden. Üblicherweise macht man es daher so, dass man bloss eine Funktion exportiert, die einen Zeiger auf eine Instanz einer Klasse zurückgibt, deren sämtliche Funktionen &quot;virtual pure&quot; sind. Diese Funktionen kannst du dann über den Zeiger aus dem Emulator-Programm aufrufen, ohne dass du sie mit LoadLibrary holen müsstest oder gar &quot;fest&quot; binden (=über eine import-lib).</p>
<p>Und je länger ich darüber nachdenke, desto besser gefällt mir dieser Hack <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Sieh nur zu dass du ausreichend Kommentare schreibst was dein Emulator da macht, und vor allem wieso - damit das der nächste der das Projekt warten muss auch verstehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147226</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 Nov 2011 01:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Tue, 22 Nov 2011 08:46:12 GMT]]></title><description><![CDATA[<p>na also,<br />
nach sowas hab ich gesucht, hatte nur noch nicht viel mit DLLs am Hut,<br />
dann wird´s jetzt Zeit das nachzuholen...</p>
<p>1000 Dank an alle und besonders <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147280</guid><dc:creator><![CDATA[jcp1978]]></dc:creator><pubDate>Tue, 22 Nov 2011 08:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Tue, 22 Nov 2011 10:27:26 GMT]]></title><description><![CDATA[<p>Ja, genau sowas in der Art wollte ich auch schon fast vorschlagen. Aber imo zahlt sich dieses gefrickel nicht wirklich aus, wenn man bedenkt, dass die einzelnen Instanzen sowieso über einen &quot;CAN Bus&quot; kommunizieren sollen. Das bedeutet er muss sowieso ein Bussystem nachbauen. Ob selbiges seine Daten nun durch Pipes schickt oder ob er sich selbst sowas wie Pipes baut, macht dann wohl keinen Unterschied, im Gegenteil. Evtl. ist die Variante mit mehreren Prozessen also nicht nur sauberer, sondern sogar auch noch weniger Implementierungsaufwand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147310</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 22 Nov 2011 10:27:26 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Tue, 22 Nov 2011 19:00:13 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Evtl. ist die Variante mit mehreren Prozessen also nicht nur sauberer, sondern sogar auch noch weniger Implementierungsaufwand.</p>
</blockquote>
<p>Das bezweifle ich mal stark.</p>
<p>Hätte aber noch andere Vorteile wenn das in verschiedenen Prozessen läuft. z.B. dass die &quot;Systeme&quot; dann auch wirklich weitestgehend getrennt sind, und ein Crash/krasses Fehlverhalten eines Systems (Speicher überschreiben, ...) ein anderes System nicht beeinflussen kann.<br />
Auch könnte man einfach ausprobieren was passiert, wenn man ein System unerwartet aus dem Spiel entfernt (Taskmanager, Prozess beenden).</p>
<p>Dafür ist es wieder lästiger in anderen Situationen. Wenn der User das Emulator-Programm beenden will, z.B. weil es sich weggehängt hat, dann muss er danach noch alle &quot;System-Prozesse&quot; einzeln killen. Kann man natürlich auch so machen dass die das mitbekommen und sich dann selbst beenden, aber ... auch wieder Aufwand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147529</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 Nov 2011 19:00:13 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Tue, 22 Nov 2011 23:43:27 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>dot schrieb:</p>
<blockquote>
<p>Evtl. ist die Variante mit mehreren Prozessen also nicht nur sauberer, sondern sogar auch noch weniger Implementierungsaufwand.</p>
</blockquote>
<p>Das bezweifle ich mal stark.</p>
</blockquote>
<p>Naja, mit dem dll-Hack muss er dann eben statt der Prozessinstanzen die einzelnen Module verwalten (abgesehen davon dass es natürlich unsauber ist, weil rumgefrickel mit temporären Dateien, der Code mehrfach gemapped wird etc.). Wenn er das prozessintern mit Threads machen will, dann muss er seinen CAN Bus immer noch selber bauen, was dann aber bedeutet er muss sich selber um die Verwaltung der Buffer und die Synchronisation kümmern. Zugegeben: Das ist jetzt auch nicht grad hochkompliziert, aber mit Pipes und separaten Prozessen braucht er all das nicht zu tun, weil es das Betriebssystem schon automatisch macht -&gt; Nicht nur sauberer sondern auch weniger Aufwand (oder zumindest ganz sicher nicht mehr)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147642</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 22 Nov 2011 23:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Wed, 23 Nov 2011 08:58:48 GMT]]></title><description><![CDATA[<p>Nein.</p>
<p>Da CAN ein multidrop, multi-master Bus ist, wird er soweiso etwas selbst implementieren müssen. Und wieso sollte das mit Prozessgrenze einfacher sein als ohne? Wo hilft sie mir?<br />
Falls Sockets/Pipes wirklich hilfreich sein sollten, dann kann man diese genau so gut innerhalb eines Prozesses verwenden. Verbietet ja keiner. Abgesehen davon dass ich nicht wüsste was damit besser gehen sollte.</p>
<p>Und je genauer er das Verhalten eines echten CAN Bus (z.B. Kollisionen/Arbitration) nachbilden will, desto eher wird er froh sein dass er keine lästige Prozessgrenze hat die bloss überall stört.</p>
<blockquote>
<p>abgesehen davon dass es natürlich unsauber ist, weil rumgefrickel mit temporären Dateien, der Code mehrfach gemapped wird etc.</p>
</blockquote>
<p>Sorry, aber das ist nur blah.<br />
Dass der Code mehrfach gemappt wird ist jetzt genau 100% egal. Und seit wann ist mit Temp-Files arbeiten unsauber?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147694</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 23 Nov 2011 08:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to C-Funktionen nach C++ portieren und instanziieren on Wed, 23 Nov 2011 23:11:26 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Da CAN ein multidrop, multi-master Bus ist [...]</p>
</blockquote>
<p>Das stimmt, dafür eignen sich Pipes nicht wirklich, da hast du absolut Recht.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Und wieso sollte das mit Prozessgrenze einfacher sein als ohne? Wo hilft sie mir?</p>
</blockquote>
<p>Nun, ich ging davon aus, dass er sowieso sowas wie Pipes oder Sockets wird verwenden wollen. In dem Fall wär die Lösung mit mehreren Prozessen auf jeden Fall ganz sicher nicht aufwändiger. Allerdings war das natürlich ein Denkfehler meinerseits.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<blockquote>
<p>abgesehen davon dass es natürlich unsauber ist, weil rumgefrickel mit temporären Dateien, der Code mehrfach gemapped wird etc.</p>
</blockquote>
<p>Sorry, aber das ist nur blah.<br />
Dass der Code mehrfach gemappt wird ist jetzt genau 100% egal. Und seit wann ist mit Temp-Files arbeiten unsauber?</p>
</blockquote>
<p>Nun, dass der Code mehrfach gemapped wird ist einfach unschön, natürlich ist es jetzt kein wirkliches Problem oder so. Mir fällt jetzt auch kein rein objektives Argument gegen diese Lösung ein, wie gesagt, ich persönlich finds einfach nicht besonders &quot;schön&quot;. Funktionieren tuts sicher...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2148029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2148029</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 23 Nov 2011 23:11:26 GMT</pubDate></item></channel></rss>