[Erledigt] befehl aus einem Terminal an ein neues Terminal übergeben



  • heyho 😉
    Ich habe angefangen mich in linux einzuarbeiten und zum Start eine art Taskplaner zu programmieren, leider stoße ich auf folgendes Problem:
    Wenn ich z.b. meine Firewall im selben Terminal starte(benötigt "sudo"/"gksudo") , wie auch andere Programme, tut sich im Terminal nichts, solange ich das vorhergehende Programm nicht geschlossen habe. Nun überlegte ich mir, die verschiedenen Programme in verschiedenen Terminals laufen zu lassen, doch dies bereitete mir ebenfalls ziemliche probleme:
    Vereinfacht sieht das so aus:

    #include<iostream>
    #include<string>
    #include<fstream>
    using namespace std;
    
    int main()
    {
    	bool good = true;
    
    	ifstream source;
    	source.open("p_in", ios::in);
    	if(!source) cerr << "ERROR while reading p_in file" << endl;
    	string content;
    	while(source.good())
    	{
    		getline(source, content);
    		if(content[0] == '#' && content[1] == '#') good = false; // zur Kommentierung "##"
    		else good = true;
    
    		if(good)
    		{
    			cout << "autoset(" << content << ")" << endl;
    			system(content.c_str());
    		}
    	}
    }
    

    schließlich rufe ich diesen Code(kompiliert 😉 ) in einem schon vorher geöffnetem Terminal auf.
    Dies ermöglicht es mir also in die datei "p_in" meine programme zu schreiben, diese datei könnte so aussehen:

    ## Starte Firewall
    gksudo firestarter
    ## Starte Messenger
    pidgin
    

    Nun also meine konkrete Frage:
    Wie kann ich Kommandos an ein aus dem vorhergehenden Terminal erstelltem Terminal weiterleiten?

    Danke im Voraus!



  • für so etwas nimmt man zwar Shellskripte. Aber als Übung bestimmt in Ordnung.

    Wenn du ein & anhängst, werden die Programme entkoppelt vom Terminal ausgeführt.
    sudo firestarter &
    pidgin &



  • Vielen Dank! Das klappt jetzt wunderbar 🙂


Anmelden zum Antworten