Ich arbeite an der Implementierung einer Unix-Shell in C und ich bin derzeit mit dem Problem der relativen Pfade beschäftigt. Besonders beim Eingeben von Befehlen. Für den Moment muss ich immer den vollen Pfad der ausführbaren Datei eingeben, wenn ich lieber "ls" oder "cat" setzen würde.Implementieren einer Unix-Shell in C: überprüfen, ob die Datei ausführbar ist
Ich habe es geschafft, die Variable $ PATH env zu bekommen. Meine Idee ist, die Variable auf das Zeichen ":" aufzuteilen, dann jede neue Zeichenfolge an den Befehlsnamen anzufügen und zu prüfen, ob die Datei existiert und ausführbar ist. Wenn mein PATH beispielsweise "/ bin:/usr/bin" ist und ich "ls" eingabe, möchte ich, dass das Programm zuerst prüft, ob "/ bin/ls" existiert und ausführbar ist, wenn nicht gehe zu "/ usr/bin /".
Zwei Fragen:
1) Ist es ein guter Weg, es zu tun? (Muss es nicht unbedingt das Beste sein. Ich möchte nur sicherstellen, dass es funktioniert.
2) Noch wichtiger, Wie kann ich in C einchecken, wenn eine Datei existiert und ausführbar ist?
Ich hoffe, ich bin klar genug, und ... na ja danke :)
Das ist genau richtig. Vielleicht könnte es nützlich sein, diese Überprüfung als eine Form der Vorvalidierung durchzuführen, aber die Realität ist, dass nichts weniger als der Versuch, sie auszuführen, Ihnen sagen wird, ob sie ausgeführt werden kann. –
Das Problem ist, wenn Sie versuchen, eines von zwei Programmen zu erkennen, von denen jedes 30 Sekunden zum Starten benötigt. –