ntpdate in einem Program
-
Hi Leute,
bitte nicht fressen, falls der Beitrag doch woanders rein gehört, war mir einfach nicht sicher
ich hab ein kleines Problem mit ntpdate.
In einem meiner Programme (zum Konfigurieren eines Systems) gibt es den Punkt "Uhrzeit einsellen" mit den Unterpunkten "manuel" und "timeserver". Das manuelle Einstellen funktioniert wunderbar nur mit dem Timserver einstellen geht nicht.hier ein schnippsel wo's hackt:
if (ausw == 2){ // timeserver system("ntpdate SERVER_IP"); if ($? == 0){ // alles OK print("Zeit mit SERVER_IP abgegelichen: "); system("date"); }else{ printf("FEHLER"); } }
wenn ich nun mein Programm ausführe, bekomme ich viele gleiche Fehlermeldungen, falls kein Timeserver erreichbar ist. Soweit ja ok aber leider hört das Bombardement von Fehlermeldungen nicht mehr auf. Ich kann noch nicht einmal mein Programm mit [Strg] + [c] abschießen.
Wenn ich allerdingt auf der Kommandozeile den selben Befehl (ntpdate <IP>) eingebe, bekomme ich genau 1 Fehlermeldung und dann wieder meinen Prompt.Kann mir einer sagen, was ich falsch gemacht habe?
Gruß Honey :xmas1:
-
if ($? == 0)
was ist das?
-
$? wie in der shell für war das erfolgreich,
mir gehts eigendlich um die zeile darüber bis dahin kommt er ja gar nimma (bin mir au mit meiner formulierung nimma sicher ... des is des wenn 5 leute in einem code rumpfuschen
)
-
eins vorne weg. du scheinst c zu programmieren. wenn dem so ist, verabschiede dich mal von dem gedanken, dass man da mit stringvariablen rumschmeißen kann wie in bashscript.
demzufolge ist system("ntpdate SERVER_IP") auch unsinnig. wenn SERVER_IP ein #define ist muss das so ausehen:
system("ntpdate " SERVER_IP);
-
SERVER_IP = keine Variable sondern ein Platzhalter für den code hier
da steht ne feste ip adresse, trotzdem bekomme ich diesen Fehler
-
Mach doch mal ein minimales Beispiel, was sich übersetzen lässt. Wenn das funktioniert, dann schaust Du, was Du anders gemacht hast. Wenn nicht, dann kannst Du das Programm hier zeigen und wir können den Fehler nachvollziehen und Dir helfen. Einfach ein Codefragment, welches noch nicht mal gültiges C ist, bringt uns auf die falsche Fährte. Beispielsweise wie bereits angesprochen ein "if ($? == 0)" ist einfach kein gültiges C. Das wird kein C-Compiler übersetzen.
-
tntnet schrieb:
Mach doch mal ein minimales Beispiel, was sich übersetzen lässt. Wenn das funktioniert, dann schaust Du, was Du anders gemacht hast. Wenn nicht, dann kannst Du das Programm hier zeigen und wir können den Fehler nachvollziehen und Dir helfen. Einfach ein Codefragment, welches noch nicht mal gültiges C ist, bringt uns auf die falsche Fährte. Beispielsweise wie bereits angesprochen ein "if ($? == 0)" ist einfach kein gültiges C. Das wird kein C-Compiler übersetzen.
Ja wäre warscheinlich besser gewesen, sorry. Aber so wie ich mein chef verstanden hab, will er des jetz gar nich mehr so haben. Trotzdem danke.
exotik888 schrieb:
stimmt es das man die festplatte c: nur auf das betriebssytem beschränken sollte?
ähm ... kann es sein, dass du dich im thread geirrt hast exotik888 ?
grüße Honey
-
Honey schrieb:
ähm ... kann es sein, dass du dich im thread geirrt hast exotik888 ?
exoktik888 ist wohl ein Spambot, zumindest deutet seine Signatur stark darauf hin.
-
Also ich verstehe das nicht ganz
if ($? == 0){
Du führst einen Befehl mit einer system() Funktion aus, und prüfst dann einen Wert? Die Systemfunktion jedoch führt ein Programm extern von deinem Programm aus, d.h. du kannst gar nicht auf irgendwelche Werte prüfen.
Solltest du dies wollen müsstest du z.B. popen() benutzen.