it-swarm.com.de

Wie "öffne ich mit ..." ein Terminalprogramm? Qt Creator, Linux

Ich habe ein Programm erstellt, das standardmäßig für bestimmte Dateitypen aufgerufen wird. Ich öffne [irgendeine Datei] mit ...] - die Datei "test.txt" wird erstellt, aber mit meinem Programm ist keine Eingabe/Ausgabe möglich. Um mit meinem Programm kommunizieren zu können, habe ich für meine ausführbare Datei einen Starter "Anwendung im Terminal" (Verknüpfung, Bezeichnung, Desktopsymbol) erstellt. Jetzt öffne ich [irgendeine Datei] mit ...] - es wird keine Datei "test.txt" erstellt. Warum?

#include <stdio.h>

char pcPW[1000];
FILE *fp;

int main()
{
    printf("Start.\n");

    fp = fopen("/home/kkk/build-ert-Desktop-Debug/test.txt", "w+");
    fprintf(fp, "Start.\n");
    fclose(fp);


    scanf("%s",pcPW);

    printf("pcPW:%s\n",pcPW);

    fp = fopen("/home/kkk/build-ert-Desktop-Debug/test.txt", "a+");
    fprintf(fp, "pcPW: \n%s\n", pcPW);
    fclose(fp);

    return 0;
}

Screenshots: http://www.filedropper.com/downloads_87

1
Kosarar

Sie können ein benutzerdefiniertes Skript hinzufügen, um das zu tun, was Sie möchten, aber es gibt einige knifflige Dinge, die Sie beachten sollten:

  • Ihr Programm ist in C/C++. Dies bedeutet, dass das Programm zuerst in eine Binärdatei übersetzt werden muss. Abhängig davon, ob spezielle Bibliotheken verwendet werden oder nicht, müssen Sie dies möglicherweise über die Befehlszeile tun. gcc Compiler erstellt standardmäßig a.out-Datei, die vom Terminal ausgeführt werden kann (d. h. die Berechtigung zum Ausführen ist bereits festgelegt). Die einfachen Kompilierungen können per Skript erstellt werden. Für komplexere Kompilierungen müssen Sie dies jedoch vom Terminal aus tun.

  • Zum Ausführen eines Programms, das auf dem Terminal gedruckt wird, muss zunächst ein Terminal vorhanden sein. Daher müssen Sie zuerst das Terminalfenster erzeugen und dann das Programm ausführen.

Also hier ist das Skript, um die Arbeit zu erledigen:

#!/usr/bin/env python
from os import path
from sys import argv
from subprocess import call

for item in argv[1:]:
    full_path = path.abspath('./' + item)
    try:
        call(['gcc',full_path])
    call(['gnome-terminal','-e', 
          "bash -c './a.out;read'"])
    except Exception as e:

Speichern Sie das als ~/.local/share/nautilus/scripts/compile_and_run.py, stellen Sie sicher, dass es über ausführbare Berechtigungen verfügt, und testen Sie.

enter image description here

Und wenn alles erfolgreich ist, werden Sie sehen:

enter image description here

2

Ich habe ein Programm erstellt, das ein Programm aufruft, das ein Programm aufruft. Die Schlüsselzeile in der ersten ist:

 execl("/usr/bin/x-terminal-emulator", "/usr/bin/x-terminal-emulator",
        "-e", "/home/kkk/build-untitled-Desktop-Debug/untitled",
        "/home/kkk/Downloads/1.pdf", (char*) NULL);

Vielen Dank, Serg, für einen tollen Tipp und 96% der Lösung.

1
Kosarar