system und dirent.h

J

jiddoo

Jungspund
Hallo,
ich wollte ein Program schreiben, welches das current working directory auf ein bestimmtes Verzeichnis setzt, weil ich dort dann rekursiv Dateien einbinden will.

Habe das inzwischen auch hinbekommen mit Hilfe der dirent.h und chdir().

Meine Frage lautet eigentlich nur, wieso das nicht mit system() funktioniert?

system("ls") oder system("pwd") funktionieren tadellos, nur z.B. system("cd ..") macht überhaupt nichts.

Gibt es da irgendwelche Restriktionen, was system() ausführen darf und was nicht?
 
Bei system() wird ein neuer Child-Prozess gestartet. Dort wird dann zwar Dein Verzeichniswechsel wirksam, der hat jedoch keinen Einfluss auf Deinen Eltern-Prozess.

Heiko
 
'cd' ist ein Builtin-Befehl der Shell und ist daher nicht über system() aufrufbar.
 
'cd' ist ein Builtin-Befehl der Shell und ist daher nicht über system() aufrufbar.

Bei mir (Debian sarge, gcc 3.3.5 (Debian 1:3.3.5-13)) schon:
Code:
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int result = system ("cd /tmp && ls");
    printf("Ergebnis: %d\n", result);

    return 0;
}
gibt mir den Inhalt von /tmp und das Ergebnis '0' zurueck. S.a. 'man system':
man system schrieb:
system() executes a command specified in string by calling /bin/sh -c string,
 
Und wieder eine Wissenslücke gefüllt. Danke @rikola. :)
Allerdings gibt es ja zum Verzeichnis wechseln auch chdir().

Nachtrag: Evtl. existiert bei jiddoo aber auch /bin/sh nicht. In diesem Fall sollte ein Link auf /bin/bash gelegt werden (als root!).
Code:
ln -s /bin/bash /bin/sh
 
Zuletzt bearbeitet:
Und wieder eine Wissenslücke gefüllt. Danke @rikola. :)
Allerdings gibt es ja zum Verzeichnis wechseln auch chdir().

Das Problem wird durch ein 'system("ls")' ja auch nicht geloest, und die Erklaerung von hwj behaelt trotz dieser Moeglichkeit ihre Gueltigkeit.
 

Ähnliche Themen

Windows clients können nicht mehr auf lange laufendes System zugreifen

Durch das ganze Unix System bestimmte Dateiart suchen

Java Development Kit Installation

probleme mit ftp

Zurück
Oben