Нет консольного приложения на Linux - PullRequest
5 голосов
/ 13 июля 2020

На Windows я обычно создаю Windows настольное приложение, потому что консольные приложения отображают на экране короткое черное поле.

Я использую CodeBlocks на Linux Mint, как я могу выполните аналогичные действия, указанные выше, но на Linux?

Я не хочу скрывать окно терминала после его отображения.

Ответы [ 3 ]

9 голосов
/ 13 июля 2020

Linux не имеет той же концепции « подсистема », как windows: нет никакой разницы или разделения между консольными и настольными приложениями. Когда вы запускаете приложение на Linux, оно не откроет окно консоли, если только программист явно не запрограммировал его на его открытие.

Если приложение записывает что-нибудь в stdout или stderr, что происходит это зависит от того, как именно приложение было запущено. По умолчанию приложение наследует stdout и stderr своего родительского процесса. Если приложение запускается с терминала, результат будет виден на терминале. Если приложение было запущено средой рабочего стола из пункта меню, вывод может go в файл журнала или может быть утерян.

Если вы видите открытое окно терминала при запуске программы из IDE, это то, что IDE делает для вас, а не ваше приложение. Если вас это беспокоит, я бы подумал, что в IDE есть способ отключить это поведение в настройках.

4 голосов
/ 13 июля 2020

Загляните в QT. Это структура GUI, которая работает на Linux.

Вы можете писать свой код, не создавая главное окно (или, может быть, вам нужно иметь главное окно, но его всегда можно скрыть ... это Прошло некоторое время с тех пор, как я его использовал).

Однако имейте в виду, что вы можете столкнуться с проблемами юзабилити с этим типом дизайна ... у пользователя нет возможности узнать, было ли запущено ваше приложение или это удалось, когда он завершен, et c.

3 голосов
/ 13 июля 2020

Самый простой способ - использовать (например) xterm [или gnome-terminal] для получения окна терминала.

Затем вызовите вашу программу из оболочки [вручную]:

/path_to_my_program

Вы можете настроить кодовые блоки, чтобы сделать это за вас.

Или вы можете добавить код, который удерживает окно по умолчанию открытым:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{

    pid_t pid = fork();

    if (pid != 0) {
        waitpid(pid,NULL,0);
        while (1) sleep(1);
    }

    long double n;
    n=5;
    printf("n= %Lf\n",n);

    return 0;
}

ОБНОВЛЕНИЕ:

Командой вызова можно управлять из: Settings -> Environment -> General Settings

По умолчанию запускается во вложенном окне xterm [всплывающее окно] . Вы можете изменить настройки, чтобы (повторно) использовать существующее окно [терминала].

Обратите внимание, что используется [программа кодовых блоков] cb_console_runner. Вы можете заменить это на что-то большее по своему вкусу.

Мне не нужны GUI или всплывающее окно терминала ...

Вы нужен какой-то своего рода терминал для запуска команды. Этот может быть скриптом, который при необходимости отклоняет stdin/stdout/stderr [и подавляет вызов подокна], так что вы Придется немного поэкспериментировать.

Как я уже упоминал выше, вы можете просто открыть окно терминала вне кодовых блоков, а затем вручную запустить команду внутри него. Технически это не всплывающее окно. Но вы теряете [автоматический] вызов отладчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...