Mit C/C++ Programm Variable setzen und vom Script auslesen ?
Mit C/C++ Programm Variable setzen und vom Script auslesen ?
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");
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");
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
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
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.
Code: Alles auswählen
#include <stdlib.h>
int setenv(const char *name, const char *value, int overwrite);
Code: Alles auswählen
man 3 setenv
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.
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.
Das ist aber ein einfacher und sehr oft verwenderter Mechanismus. Falls du tiefer in Prozesskommunikation einsteigen willst schau dir eventuell diesen Artikel [1] an.LeoManiac hat geschrieben:so hab jetzt über die existensprüfung einer datei geregelt funktioniert auch so weit nur find ich das unschön
cu
[1] http://www.linux-magazin.de/Artikel/aus ... rnel3.html
da find ich diese Seite besser hab mich damit schon ein bißchen mit auseinander gesetzt
http://www.pronix.de/C/Linuxprogrammierung/index.shtml
http://www.pronix.de/C/Linuxprogrammierung/index.shtml