Как делают я “Открываю с …” терминальную программу? Спокойный Создатель, Linux

Я создал программу, которая будет вызвана как значение по умолчанию для определенных типов файлов. Я “Открываю [любой файл] с …” это - файл “test.txt” создается, но никакой ввод-вывод с моей программой не возможен. Чтобы смочь общаться с моей программой, я создал “Приложение в Терминальном” средстве запуска (ярлык, маркировка, значок на рабочем столе) для моего исполняемого файла. Теперь я “Открываю [любой файл] с …” это - никакой файл “test.txt” не создается. Почему?

#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;
}

Снимки экрана: http://www.filedropper.com/downloads_87

1
задан 19 January 2017 в 18:15

2 ответа

Я создал программу, вызывающую программу, вызывающую программу. Ключевая строка в первом:

 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);

Спасибо, Serg, для большой подсказки и 96% решения.

1
ответ дан 7 December 2019 в 12:36

Можно добавить пользовательский сценарий, чтобы сделать то, что Вы хотите, но существует пара хитрые вещи, которые Вы хотите иметь в виду:

  • Ваша программа находится в C/C++. Это означает, что программа должна будет быть скомпилирована в двоичный файл сначала. В зависимости от того, пользуется ли это какими-либо специальными библиотеками, Вам, возможно, придется сделать так от командной строки. gcc компилятор по умолчанию создает a.out файл, который может работать от терминала (т.е. исполняемое разрешение уже установлен). Простые компиляции могут быть заданы сценарием, но для более сложного необходимо будет сделать это от терминала.

  • Запущение программы, которая печатает к терминалу, требует наличия терминала во-первых. Таким образом необходимо породить окно терминала сначала и затем запустить программу.

Таким образом, вот сценарий, чтобы сделать задание:

#!/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:

Сохраните это как ~/.local/share/nautilus/scripts/compile_and_run.py , удостоверьтесь, что это имеет исполняемые полномочия и тест.

enter image description here

И если все успешно, это - то, что Вы будете видеть:

enter image description here

2
ответ дан 7 December 2019 в 12:36

Другие вопросы по тегам:

Похожие вопросы: