system und dirent.h

Dieses Thema im Forum "C/C++" wurde erstellt von jiddoo, 20.12.2006.

  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. 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...
  2. 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....
  3. 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,...
  4. Freies ERP-System Tryton in Version 4.0 erschienen

    Freies ERP-System Tryton in Version 4.0 erschienen: Das freie Warenwirtschaftssystem Tryton ist in Version 4.0 erschienen, die erstmals Python 3 nutzen kann. Für die Anwender kamen etliche neue...
  5. Richard Stallman erhält ACM-Preis für Softwaresysteme

    Richard Stallman erhält ACM-Preis für Softwaresysteme: Die Association for Computing Machinery hat GNU-Gründer Richard Stallman den Preis für Softwaresysteme 2015 zuerkannt. Stallman erhält den...