system()-Befehl unter Linux



  • Hallo,
    hab folgendes Problem mit dem System-Befehl in C.

    const char *dir_cmd = "cd /homenet/prog/utils/";
    
        if ( ( tmpfile = fopen( tmp_datei, "wr" ) ) != NULL )
        {
          if( system( dir_cmd ) != 0 ); // ins Directory wechseln
         }
    

    Meine Frage:
    Wenn ich cd durch dir oder ls ersetze gehts, nur micht mit cd.
    Warum?

    Gruß Gorgoner



  • Was heißt geht nicht? Es wird sicher kein Fehler ausgegeben.

    Es ist aber so: system() erzeugt einen neuen Shell-Prozess, der dann deinen Befehl ausführt. Die Shell wechselt brav das Verzeichnis und beendet sich dann ... dein Prozess bekommt von dem ganzen nichts mit, weil jeder Prozess sein eigenes aktuelles Verzeichnis hat. Bessere Idee: man: chdir(2)

    BTW: "wr" ist kein gültiger Modus für fopen. Du willst wahrscheinlich "r+". Im Zweifelsfall: man: fopen(3)


Anmelden zum Antworten