(Linux/Unix) Frage zu pipe



  • Hallo,
    Mit dem Code wollte ich einen Benutzer „root“ machen. Es ist noch nicht fertig. Aber ich bekomme eine unendliche Schleife, die Passwort anfordert. Was ist falsch? Ich habe doch keine while() Anweisung?

    int n,fd[2];
    pid_t pid;
    char pw[100];
    if (pipe(fd) < 0)
    cout << "pipe error" << endl;
    if((pid = fork()) < 0)
    cout << "fork error" << endl;
    else if(pid > 0) /*Eltern*/
    {
    close(fd[0]);
    write(fd[1], "passwort", 12);
    }
    else /*Kind*/
    {
    close(fd[1]);
    n = read(fd[0], pw, 100);
    execvp("su", NULL);
    }
    

    Danke



  • Prüf mal den Rückgabe-wert von execvp...

    ~> echo passwort|su
    su: must be run from a terminal
    

    Funktioniert so also nicht.

    /* äh, nee.. eigentich hat der Rückgabewert von execvp garnix damit zu tun */

    [ Dieser Beitrag wurde am 19.06.2003 um 20:34 Uhr von DrGreenthumb editiert. ]


Anmelden zum Antworten