(10.11.2011 08:57 )lg schrieb: Ok, so genau hatte ich mir diese Sache noch nicht angesehen. Ich spiele mit dem Gedanken später einen Installer zu erstellen. Der könnte dann das aufgerufene Programm an einem definierten Ort ablegen, so dass ich mit einem relativen Pfad da sicher hin komme.
Wie unsauber ist so einen Kommandozeilenaufruf denn überhaupt? Ich schreibe momentan an meiner Bachelorthesis und insofern sollte das keine völlig verwefliche Methode sein. Ist das die Kategorie "Sollte man nicht so oft machen" oder eher die Kategorie "goto-Todsünde"?
PS: Ich möchte keine Diskussion über gotos anfangen, aber wahrscheinlich ist die Gefahr in einem Labviewforum da auch nicht so groß.
In Unix/Linux ist der Kommandozeilenaufruf die allgemein übliche Art um externe Funktionalität aufzurufen. Unter Windows ist es etwas weniger gebräuchlich aber genau so legitim. Einige der Gründe warum das unter Windows weniger oft getan wird sind folgende:
- Windows kam von Anfang an mit einem Standard Shared Library Format. Unix hatte in früherer Zeit keine Shared Libraries und die ersten Implementationen die erschienen, waren für jede Unixumgebung wieder anders und teilweise extrem buggy.
- Unix Prozesserzeugung war besser omptimalisiert so dass die Erzeugung eines neuen Prozesses zur Ausführung einer Kommandozeile nicht so ein grosses Problem war. Unter Windows war und ist die Erzeugung eines Prozesses eine relativ kostbare Angelegenheit, so dass es nicht praktisch ist um ein Kommandozeilentool sehr häufig immer wieder aufzurufen. Eine DLL wird normalerweise im bestehenden Prozess einmal geladen und danach ist die Ausführung von Funktionen aus der DLL ein sehr fixer Vorgang.
Aber Aufruf eines Kommandozeilentools an sich ist auch unter Windows keine Schande. Einziges mögliches Problem ist das Format der Eingabe/Ausgabe. Microsoft Applikation und solche die sich Microsoft als Vorbild nehmen, wollen alles lokalisieren. Dann wird das Parsen einer Antwort oft ein Ratespiel.