Kann man aus einem C Programm Daten zu einem Python Programm übertragen ohne über sdout zu gehen?
Oder lieber das C Programm mit Python starten und die Daten so holen?
Linux natürlich.
Interprozesskommunikation oder „gehe nicht über sdout „
Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese
- Fritzler
- Beiträge: 12603
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Interprozesskommunikation oder „gehe nicht über sdout „
Du kannst (named) pipes nutzen.
So habe ich es getan um beim RasPi USB Stick Emulator die Dateinamen aus dem C programm rauszupopeln und in Pathon nutzbar zu machen.
C Teil:
https://git.fritzler-avr.de/fritzler/ra ... /pipeing.h
https://git.fritzler-avr.de/fritzler/ra ... /pipeing.c
Schlangenteil:
https://git.fritzler-avr.de/fritzler/ra ... ipeRead.py
Lektüre:
https://www.geeksforgeeks.org/named-pip ... c-program/
Überträgt eben nur bytes, ein protokoll musste dir selber ausdenken
So habe ich es getan um beim RasPi USB Stick Emulator die Dateinamen aus dem C programm rauszupopeln und in Pathon nutzbar zu machen.
C Teil:
https://git.fritzler-avr.de/fritzler/ra ... /pipeing.h
https://git.fritzler-avr.de/fritzler/ra ... /pipeing.c
Schlangenteil:
https://git.fritzler-avr.de/fritzler/ra ... ipeRead.py
Lektüre:
https://www.geeksforgeeks.org/named-pip ... c-program/
Überträgt eben nur bytes, ein protokoll musste dir selber ausdenken
Re: Interprozesskommunikation oder „gehe nicht über sdout „
Danke, grübel ich mal nach. Schwere Kost___.self
Aber, da wird eine Datei erzeugt, oder ist das nur im Ram?
Aber, da wird eine Datei erzeugt, oder ist das nur im Ram?
//no commentsFritzler hat geschrieben: ↑Fr 9. Sep 2022, 20:14 https://git.fritzler-avr.de/fritzler/ra ... ipeRead.py
Re: Interprozesskommunikation oder „gehe nicht über sdout „
Grundkonzept von allen *nixen: alles ist eine Datei.
Ein Fifo ist eine Datei, die von zwei Prozessen geöffnet wird und dann werden vom Kernel quasi über kreuz die Lese/Schreibbuffer miteinander verbunden. Was der eine schreibt kann der andere lesen. Quasi ein Rohr zwischen den Prozessen. Du kippst auf der einen Seite was rein, das fällt auf der anderen Seite raus.
https://man7.org/linux/man-pages/man7/fifo.7.html
- Fritzler
- Beiträge: 12603
- Registriert: So 11. Aug 2013, 19:42
- Wohnort: D:/Berlin/Adlershof/Technologiepark
- Kontaktdaten:
Re: Interprozesskommunikation oder „gehe nicht über sdout „
"everything is a file"
-> https://de.wikipedia.org/wiki/Everything_is_a_file
Ein Socket unter linux hat auch nurn fileDesrcriptor
Daher kannste dich mit fprintf auch übers Netzwerk auskotzen.
stdio is auch nurn fileDesrcriptor.
Wenn du also bisher brav mit fprintf auf den stdio geschrieben hast statt mit printf, so ist die Änderung jetzt sehr einfach.
Der Code ist die Doku