Neuer Terminal unter Linux mit C

#1557716
Lesenswert?

Alex G. schrieb:
> Hallo,
> ich habe ein C-Skript das mit Hilfe des system() befehls einige bash
> kommandos ausführen kann.

Ich nehm an ein c Programm, das kompiliert werden musste... Ein Skript 
wird ja interpretiert.

Vielleicht hilft dir:

http://www.tutorials.de/forum/linux-unix/348599-neues-terminal-fenster-fuer-bash-scripte.html

hier steht wie man ein Fenster für Befehle öffnen kann, vielleicht 
kannst du dir das ja in system() rein flicken. Hier werden dann Skripte 
für die bourne again shell verwendet.

Ich google mal noch ein bisschen danach :-D

Sebastian

P.S. ach ja, hilfreich sind noch Informationen wie z.B. welche konsole 
du verwendest, ob du kde 3.5 oder 4.2 oder gar gnome verwendest, welchen 
befehl du aufrufen möchtest und so weiter...
OP Persönliche Seite #1557782
Lesenswert?

Vielen dank für deine Antwort.
Sebastian Brendler schrieb:
> P.S. ach ja, hilfreich sind noch Informationen wie z.B. welche konsole
> du verwendest, ob du kde 3.5 oder 4.2 oder gar gnome verwendest, welchen
> befehl du aufrufen möchtest und so weiter...
Ich benutze gnome (Ubuntu9.10) und ich möchte diesen Befehl ausführen:
$ rfcomm connect /dev/rfcomm0 00:XX:XX:XX:XX:XX 1


> Ich nehm an ein c Programm, das kompiliert werden musste... Ein Skript
> wird ja interpretiert.
Du nimmst richtig an :)

Warum ich den Befehl in einem neuen Terminalfenster ausführen will?
Der Grund ist einfach der Befehl belegt den ganzen Terminal und ich 
brauche den Terminal im folgenden für mein C-Programm noch.
Gast #1557796
Lesenswert?

warum das drive nicht fest einbinden so das es so bald es auftaucht 
automatisch eingebunden wird ?

in der /etc/bluetooth/rfcomm.conf z.b.

rfcomm0 {
        # Automatically bind the device at startup
        bind yes;
        # Bluetooth address of the device
        device 00:00:00:00:00:00;
        # RFCOMM channel for the connection
        channel 1;
        # Description of the connection
        comment "BT-Bus Platine";
}
Gast #1557805
Lesenswert?

Unter Unix-Systemen gibt es i.d.R. keinen Mechanismus, aus einem Prozess 
einen zweiten zu starten, wie man es erwarten würde.
Der übliche Weg besteht darin, den aktuellen Prozess mit fork() 
aufzuspalten und einen der beiden Prozesse danach mittels exec*() zu 
ersetzen.

Sinnvoll sind auch pipe(), dup(), dup2() und/oder popen().
Gast #1557826
Lesenswert?

>Der Grund ist einfach der Befehl belegt den ganzen Terminal und ich
>brauche den Terminal im folgenden für mein C-Programm noch.

Ist das Starten dieses Befehls mit "befehl &" im Hintergrund keine 
Option?

Gast
Gast #1557926
Lesenswert?

1
system("xterm -e 'rfcomm connect /dev/rfcomm0 00:XX:XX:XX:XX:XX 1'")

Wenn das Fenster nach Ausführung des Kommandos offen bleiben soll, 
kannst du's auch so schreiben:
1
system("xterm -e 'rfcomm connect /dev/rfcomm0 00:XX:XX:XX:XX:XX 1; read'")
OP Persönliche Seite #1559340
Lesenswert?

Hi,
vielen Dank für eure Antworten.

Einbinden ist keine so gute Idee, ich werde das Programm auf mehreren 
verschiedenen Rechnern laufen lassen, die auch ständig wechseln.

> system("xterm -e 'rfcomm connect /dev/rfcomm0 00:XX:XX:XX:XX:XX 1; read'")

Das funktioniert schon ganz gut.
Das Problem ist jedoch der rfcomm Befehl muss nebenbei laufen, das heißt 
das C-Programm und der Befehl müssen gleichzeitig laufen. Das C-Programm 
wird nicht fortgesetzt solange der Befehl ausgeführt wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren