Как запустить интерактивную программу на С++ с помощью внешних инструментов в gedit

Я пытаюсь запустить свою программу на С++ в интерактивном режиме прямо в gedit, используя внешние инструменты.

Я уже написал инструмент Python для его компиляции, но при использовании os.system("./program.out") все входные данные для программы устанавливаются равными 0 (хотя он выполняется правильно).

Поскольку использование Python для его интерактивного выполнения было бы довольно сложным, я ищу другое решение.

#!/usr/bin/env python3

import os

filename = os.getenv("GEDIT_CURRENT_DOCUMENT_NAME")
fout = "%s%s"%(filename[:len(filename)-4], ".out") #

os.system("c++ -o %s %s" % (fout,filename))

os.system("./%s" % fout)

компиляция работает безупречно, но ./program.out также не дает желаемого результата при использовании bash. Какие-либо предложения?


person Lars Müller    schedule 25.10.2019    source источник
comment
Предоставляет ли GEdit терминал, в который вы можете вводить данные?   -  person Davis Herring    schedule 25.10.2019
comment
Моя первая реакция: но почему? вы ненавидите IDE по какой-то причине?   -  person LeDYoM    schedule 26.10.2019
comment
@DavisHerring хорошая мысль! Я действительно что-то нашел, но это .... да ... я опубликую ответ :)   -  person Lars Müller    schedule 26.10.2019
comment
@LeDYoM да! я просто не люблю их, потому что они действительно не на месте, и, конечно, вам нужно дополнительное программное обеспечение. Я просто хочу работать с минимумом/своими инструментами^^   -  person Lars Müller    schedule 26.10.2019
comment
@LarsMüller: обратите внимание, что более мощные редакторы, такие как Emacs, на самом деле делают предоставляют терминал, который можно использовать для таких целей.   -  person Davis Herring    schedule 26.10.2019


Ответы (2)


Кажется, я нашел ответ. Возможно, это не самое красивое решение, но оно работает.

При определении инструмента вы можете выбрать ввод в раскрывающемся меню, есть опция для выбранного текста в качестве ввода.

Так, например, если у вас есть программа, которая считывает 3 переменные из стандартного ввода, вы можете добавить комментарий к своему коду, например //1 3 2, выбрать только числа, а затем запустить свой инструмент. Эти числа будут использоваться в качестве ввода в этом порядке, почему-то это работает только с пробелами.

Я думаю, жестоким способом реализации этого было бы сканирование входных вызовов в исходном коде и запрос их через zenity в инструменте gedit.

person Lars Müller    schedule 25.10.2019

А вот еще решение:

Я могу просто использовать echo 3 2 1 | ./program.out в инструменте

это делает все намного проще

person Lars Müller    schedule 25.10.2019