in einem prog ein anderes starten (shell)???



  • hallo
    ich fang grad an auchn bissl unter linux zu proggn. ich versuchs zumindestens 😉
    da hab ich doch gleich ma ne frage.
    hab ein kleines prog was in der shell läuft, wo man einen namen eingeben soll,
    und n anderes prog, welches einen namen ausgibt. kann ich jetz, wenn das erste prog läuft und man aufgefordert wird einen namen einzugeben irgendwie das zweite prog darin starten, welches dann einen namen eingibt??? also sind zwei unabhängige programme. geht das irgendwie? hoffe ihr versteht was ich meine 😞
    hoffe mir kann jemand helfen.
    gruß
    ebrosius

    achso, die beiden progs sind in c++ geschrieben



  • Du must zuerst mittels man: fork Dein Programm forken und in dem Child dann mittels einer der man: exec Funktionen das gewünschte Programm ausführen.

    HTH



  • vielen dank erstmal für deine schnelle antwort.
    hm...aber ich glaub das is nich das was ich meine. ich will ja in den progs nichts ändern. jedenfalls nicht in dem ersten, welches den namen einlesen soll.
    geht glaub ich eher um n linux befehl 😕 also die shell ist durch das erste prog belegt, was auf einen namen, oder irgendnen text wartet, und anstatt n text einzugeben will ich das zweite prog darin starten.

    ebrosius@debian:~/c++$ ./test3

    Bitte geben sie ihren Namen ein: (hier will ich ./ausg starten)



  • Das klappt! 😉

    Schau Dir folgendes C Schnipsel mal an:

    int main(int argc, char **argv)
    {
        if (fork() > 0)
            execlp("ls", "ls -al", 0);
    
        return 0;
    }
    


  • hm...sorry, ich bin zu blöd 😞
    ich bekomm doch ./ausg garnet gestartet. im prog test3 will ich nichts ändern.
    sorry nochmal falls ich mich zu blöd anstelle



  • Ich hatte das jetzt so verstanden, dass Du Dein Programm startest. Dieses blockiert natürlich die Shell. Dann gibt der Benutzer einen Namen ein. Dann musst Du in Deinem Programm das zweite Programm(ausgabe) aufrufen.

    Ersetze in dem Schnipsel einfach ls durch ./ausgabe und der Einfachheit wegen den Parameter -al auf den eingegebenen Namen. Du könntest natürlich auch man: pipes verwenden, um den Namen zu übergeben.



  • nee so meint ich das nicht. die beiden progs sind völlig unabhängig voneinander. wenn die aufforderung kommt, will ich keinen namen eingeben, sonder das zweite prog starten, welches den namen dann für mich eingibt. ohne das im ersten prog etwas dafür verändert wird. aber das geht glaub ich garnet 😕
    also das programm im programm selbst per hand starten.
    oh man, wieso hab ich eigentlich immer so blöde ideen?



  • $ ./ausgabe-programm | programm
    

    HTH



  • damit klappt es. vielen dank kingruedi 🙂


Anmelden zum Antworten