Variblen übergeben.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Variblen übergeben.

Beitrag von DEBIANUNDANDREAS » 14.12.2014 13:51:00

Hallo.
Ich möchte wissen wenn ich in der bash eine variable mit Inhalt fülle wie kann ich den Variableninhalt auf ein gesondertes im Hintergrund laufendes c++ Programm übergeben?

wanne
Moderator
Beiträge: 7548
Registriert: 24.05.2010 12:39:42

Re: Variblen übergeben.

Beitrag von wanne » 14.12.2014 15:07:58

rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
DEBIANUNDANDREAS
Beiträge: 1304
Registriert: 01.06.2013 10:37:46

Re: Variblen übergeben.

Beitrag von DEBIANUNDANDREAS » 14.12.2014 17:50:29

Ich dachte eher ihr postet mir hier oder per http://dpaste.com/ ein Beispiel .

JuergenPB

Re: Variblen übergeben.

Beitrag von JuergenPB » 14.12.2014 18:42:46

Das ist nicht so einfach. Interprozess-Kommunikation ist sowieso nicht so einfach, wie Du auch dem von „wanne“ verlinkten Wikipedia-Artikel entnehmen kannst.

Eventuell könntest Du die Daten in eine Datei schreiben. Dann kann Dein C++ Programm regelmäßig nachgucken, ob die Datei existiert oder sich der Inhalt geändert hat und entsprechend reagieren.

Falls das C++ Programm auch von Dir stammt 8O, würde Dir raten, mal Kapitel 7 (Prozesse), 8 (Signale) und 9 (IPC) zur Linux-Programmierung durchzulesen.
Hier geht's los: http://openbook.galileo-press.de/linux_ ... 07-000.htm

wanne
Moderator
Beiträge: 7548
Registriert: 24.05.2010 12:39:42

Re: Variblen übergeben.

Beitrag von wanne » 14.12.2014 18:48:23

Und ich habe mir gedacht dass wir nicht deine Programmierer sind.
Aber hier doch denn shell Teil, wie man das typischerweise macht:

Code: Alles auswählen

tmpfile=$(mktemp)
cppprog $tmpfile &
pid=$!
variable="inthalt"
echo "variable=$variable" > $tmpfile
kill -s USR1 $pid
Dein cpp Programm braucht dann eine signalhandler Routine für USR1, die dann die Datei deren Pfad in arg[1] liegt ließt.

Das geht auch eleganter, aber das ist so der primitivste und platformunabhängigste Weg, wie sowas geht.
Hier die mit abstand dümste Methode, wie man sowas machen kann (Zerlegt Wert in seine Bits und sendet dann für 0 USR1 und für 1 USR2): ftp://wanne.t-8ch.de/UNI/OS_Praktikum/7signals
(Gepostet, damit du siehst, wie das mit Signalen in C funktioniert.)
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten