Unterschiede zwischen Rückgabewerten in main()
-
supertux schrieb:
Aber beim main() glaube ich, spielt das keine große Rolle, ob du return 1; oder return 377473673; machst.
Klar, sofern man es dokumentiert.
Gerade in der Unix-welt verwendet man gerne und viel Kommandozeilenprogramme. Man baut sich mit diesen quasi größere Programme zusammen indem man sie miteinander 'koppelt'. Und wenn es da einen fehler gibt, ist es natürlich immer praktisch wenn man einen Fehlercode hat, unter dem man nachschlagen kann. Ob er jetzt 1 oder 2 ist, ist egal. Nur dokumentiert sollte er sein - und eindeutig.
-
Die Rückgabe Werte sind auch dann wichtig wenn man ein Programm aus einem anderen Programm oder Script (Batch) heraus aufruft.
Ich ärgere mich gerade über das M$ ping, da es immer 0 zurückgibt egal ob der ping erfolgreich war (d.h. IP-Adresse hat geantwortet) oder nicht.
Ich wollte das ping aus einem anderen Programm aufrufen um festzustellen ob eine IP-Adresse in Benutzung ist oder nicht. jetzt muß ich den ganzen Output von ping in eine Datei umleiten und diese Datei auswerten.
Außerdem kann das ping kein Broadcast grummel grummel.
Jedes Programm sollte eine return Wert haben 0 wenn erfolgreich != 0 wenn ein Fehler aufgetreten ist
Soviel von mir zu return Werten.
-
Shade Of Mine schrieb:
Und wenn es da einen fehler gibt, ist es natürlich immer praktisch wenn man einen Fehlercode hat, unter dem man nachschlagen kann. Ob er jetzt 1 oder 2 ist, ist egal.
Und wenn man sich nicht entscheiden kann: EXIT_FAILURE
-
PAD schrieb:
Ich wollte das ping aus einem anderen Programm aufrufen um festzustellen ob eine IP-Adresse in Benutzung ist oder nicht. jetzt muß ich den ganzen Output von ping in eine Datei umleiten und diese Datei auswerten.
Außerdem kann das ping kein Broadcast grummel grummel.
Warum machst du dir dann in deinem Programm nicht selber einen Ping?
-
weil ich in diesem Bereich keine Erfahrung habe, und mich erst einarbeiten müsste. Das läßt das Projekt zeitmäßig derzeit nicht zu.
Das Problem hat sich aber geköst, Dank dieses Forums habe ich Zugriff auf einen ping Source bekommen, den ich modifizieren konnte und die jetzt funktioniert.
-
AJ schrieb:
Warum machst du dir dann in deinem Programm nicht selber einen Ping?
Weil ping auf Unix-Systemen root-Rechte braucht, und somit meist setuid root ist. Und die meisten Sysadmins sehen das ungerne, wenn man mit einem eigenen Programm ankommt, und dafür auch suid-root haben will
-
@SG1
Ich dachte eigentlich eher daran, dass man das Protokoll im Programm verwendet und nicht dass man anstatt dem bestehendem Programm Ping ein zweites eigenes macht und dieses dann dafür aufruft (wär ja das gleiche in grün).
-
AJ: Eben, um das "Ping-Protokoll" (eigentlich ICMP Echo) zu benutzen, muss man ein Raw Socket aufmachen, TCP oder UDP tuts da nicht. Dafür benötigt man aber Superuser-Rechte.
Das Ping-Programm hat ein gesetztes SUID-Bit, d.h. dass es mit der Benutzerkennung und den Privilegien des Besitzers (root) statt denen des Aufrufers (sterblicher) läuft.
-
Auch wenn man es bei ping vermuten könnte, das ich mit unix probleme habe ist das leider falsch. Ich bin durch M$ eingeschränkt.
Das ping problem habe ich aber inzwischen durch Hilfe aus dem Forum gelöst
Trotzdem Danke
-
@Bashar
Achso. Kenne mich leider mit solchen Details nicht so aus :(.