Mit C/C++ Programm Variable setzen und vom Script auslesen ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Mit C/C++ Programm Variable setzen und vom Script auslesen ?

Beitrag von LeoManiac » 20.10.2003 23:15:25

Hi,

ist es möglich eine Variable von einen C/C++ zu setzen und diese mit einen Script auslesen oder muss ich das über eine seperate Datei lösen ?

Therotisch müste das über ein alias gehen oder ?

system("alias VAR=1");

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 21.10.2003 08:31:50

Was spricht gegen den Rückgabewert der main-Funkiton? Oder brauchst du mehrere Variablen, oder diese während das eigentliche Programm noch läuft?

cu

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 21.10.2003 08:40:19

ich brauch die während der Laufzeit des Programms

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 21.10.2003 08:51:25

Dann versuch es doch einfach mal so wie du es oben geschrieben hast. Ich würde jedoch kein Alias anlegen sondern mit export die Varibale setzen, kommt jedoch auf deine shell an.
Es dürfte jedoch recht schwer werden das Script und das Programm so zu synkronisieren, dass das im richtigen Moment auf die Varibale zugreift. Vielleicht kannst du ja mal kurz deine Aufgabenstellung beschreiben und man kann das C-Programm eventuell in mehrere Teile zerlegen die vom Script gesteuert werden oder die Sache komplett anders lösen. Oder warum brauchst du die Variable unbedingt in der Shell?

cu

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 21.10.2003 09:15:57

mein C/C++ Programm ist ein kleines Netzwerktool mit dem man beschränkt die iptables Firewall administieren kann (Portforwardings löschen/hinzufügen) und halt die Firewall starten,stoppen, Verbindung aufbauen und beenden. Da ich aber in der ip-down den reconnect Befehl stehen habe wählt sich der router sofort wieder ein wenn ich per Tool den stop bzw. hangup befehl gebe und das möcht ich halt durch abfrage einer Variable in der ip-down verhindern.

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 21.10.2003 12:44:59

Code: Alles auswählen

#include <stdlib.h>
                                                                                
int setenv(const char *name, const char *value, int overwrite);
Siehe auch

Code: Alles auswählen

man 3 setenv

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 21.10.2003 13:47:40

hmm wenn das Programm im Hintergrund gestartet wird funktioniert das aber nicht mit setenv

leider muss ich das programm im hintergrund starten weil das programm beim booten gestartet werden soll und ich mir sonst die shell blockiere

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 21.10.2003 15:03:22

Stimmt. Aber in diesem Falle kannst Du den Weg über eine Umgebungsvariable ohnehin vergessen.
Jeder Prozess hat seine eigene Umgebung, die er an seine Kindprozesse vererbt.
Ich würde das ganze über ne Lock-Datei lösen,die bei Bedarf in /var/lock anlegt wird. Im ip-down kannst Du dann auf die Existenz dieser Datei prüfen, statt eine Umgebunbsvariable abzufragen.

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 22.10.2003 12:12:28

so hab jetzt über die existensprüfung einer datei geregelt funktioniert auch so weit nur find ich das unschön

wenn noch wer nen möglichen weg weis oder findet wäre ich dankbar

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 22.10.2003 12:46:43

LeoManiac hat geschrieben:so hab jetzt über die existensprüfung einer datei geregelt funktioniert auch so weit nur find ich das unschön
Das ist aber ein einfacher und sehr oft verwenderter Mechanismus. Falls du tiefer in Prozesskommunikation einsteigen willst schau dir eventuell diesen Artikel [1] an.

cu

[1] http://www.linux-magazin.de/Artikel/aus ... rnel3.html

LeoManiac
Beiträge: 179
Registriert: 02.10.2003 20:22:30

Beitrag von LeoManiac » 22.10.2003 13:23:47

da find ich diese Seite besser hab mich damit schon ein bißchen mit auseinander gesetzt

http://www.pronix.de/C/Linuxprogrammierung/index.shtml

Antworten