2017-04-13 3 views
0

Ich erstelle eine Anwendung in C, die ich das Firefox mit dem Befehl execlp ausführen muss, aber jedes Mal, wenn ich es ausführe "verloren" ich meine aktuelle Terminal, aber nach der execlp muss ich noch die verwenden Terminal, das ich vorher war, so ist meine Frage: Gibt es einen Weg, wo ich in einem Terminal Anruf execlp sein kann und es in einem anderen ohne Block der eine ich bin ausgeführt?Execlp in einem anderen Terminal ausführen

hier ist ein Ausschnitt aus meinem Code:

pid_t child = fork(); 
if (child == -1) { 
    perror("fork error"); 
} else if (child == 0) { 
    exec_pid = getpid(); 
    execlp("firefox", "firefox", URL, NULL); 
    perror("exec error"); 
} 
    // keep with program logic 
+0

Was genau meinen Sie mit "verlieren" Ihre aktuelle Terminal "? Meinst du nur, dass es unscharf wird? – rici

+0

http://StackOverflow.com/Questions/11807688/How-to-Detach-Aprocess-from-terminal-in-Unix – stark

+0

nachdem ich exec für mich ausführen, um das gleiche Terminal zu verwenden, muss ich entweder eine beliebige Taste drücken oder kill mein Programm, so dass ich meinte, als ich sagte, ich habe das Terminal verloren. –

Antwort

2

Wenn ich Sie richtig bin zu verstehen, Sie sagen, dass Ihr Programm Firefox startet und dann die Kontrolle über Ihre Shell hält, bis Firefox beendet wird. Wenn dies der Fall ist, gibt es eine Reihe von Möglichkeiten.

Die einfachste Lösung ist, Ihr Programm im Hintergrund auszuführen. Führen Sie es wie ./my_program & aus und es wird in einem separaten Prozess gestartet und die Kontrolle Ihres Terminals wird Ihnen sofort zurückgegeben.

Wenn Sie dies von Ihrem C-Code lösen möchten, besteht der erste Schritt darin, die Prozess-ID des untergeordneten Prozesses nach der Verzweigung auszudrucken. Verwenden Sie in einer separaten Shell ps, um sowohl Ihr Programm als auch die gegabelte PID zu überwachen. Stellen Sie sicher, dass Ihr Programm tatsächlich beendet wird und nicht nur auf etwas warten muss.

+0

Siehe auch [diese verwandte Frage] (https://askubuntu.com/questions/484993/run-command-on-anothernew-terminal-window) für Möglichkeiten, ein Programm so zu starten, dass es in einem neuen, separaten Terminalfenster startet . – bta

Verwandte Themen