system und dirent.h

Diskutiere system und dirent.h im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich wollte ein Program schreiben, welches das current working directory auf ein bestimmtes Verzeichnis setzt, weil ich dort dann rekursiv...

  1. jiddoo

    jiddoo Jungspund

    Dabei seit:
    22.08.2006
    Beiträge:
    17
    Zustimmungen:
    0
    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?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hwj

    hwj Doppel-As

    Dabei seit:
    23.06.2006
    Beiträge:
    131
    Zustimmungen:
    0
    Ort:
    Bei Buxtehude
    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
     
  4. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    'cd' ist ein Builtin-Befehl der Shell und ist daher nicht über system() aufrufbar.
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    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':
     
  6. #5 theton, 20.12.2006
    Zuletzt bearbeitet: 20.12.2006
    theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    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
    
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Das Problem wird durch ein 'system("ls")' ja auch nicht geloest, und die Erklaerung von hwj behaelt trotz dieser Moeglichkeit ihre Gueltigkeit.
     
  9. jiddoo

    jiddoo Jungspund

    Dabei seit:
    22.08.2006
    Beiträge:
    17
    Zustimmungen:
    0
    Danke für die Tipps. Das Forum ist echt gut.
     
Thema: system und dirent.h
Besucher kamen mit folgenden Suchen
  1. c dirent.h

Die Seite wird geladen...

system und dirent.h - Ähnliche Themen

  1. Linux "vergisst" Dateisystem?

    Linux "vergisst" Dateisystem?: Hallo zusammen! Aufgrund des von mir hier beschriebenen Problems habe ich nun die halbe Nacht "durchgearbeitet", da ein komplett neues Konzept...
  2. Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen

    Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen: Ich mache gerade meine ersten Schritte mit Linux und würde gerne auf Dateien meines Linuxsystems auch mit Windows zugreifen, ich bin am...
  3. Systempartition um den Speicherplatz der zweiten Disk erweitern

    Systempartition um den Speicherplatz der zweiten Disk erweitern: Guten Tag liebe Leute Ich habe einen virtuellen Server mit 2 Disk a je 25GB. Nun möchte ich, das meine Hauptpartition um diese zusätzlichen 25GB...
  4. Debian VM Klonen und parallel betreiben? Systemanpassungen

    Debian VM Klonen und parallel betreiben? Systemanpassungen: Hallo, ich habe vor eine Debian Maschine als Prototyp aufzusetzen... (als vSphere VM).... Diese Maschine will ich dann x-mal klonen und in div....
  5. IT-Systemadministrator/in in Teilzeit oder freiberuflich

    IT-Systemadministrator/in in Teilzeit oder freiberuflich: Wir suchen ab sofort in Teilzeit (20 Std./Woche) oder freiberuflich eine/n IT-Systemadministrator/in. Ihr Aufgabengebiet: Administration,...