Ubuntu — Как я могу открыть программу в отдельном терминале из кода C ++?

Я хочу выполнить следующие задачи программно.

  1. В C ++ откройте терминал (система («gnome-терминал»);)
  2. В C ++
    запустить программу, расположенную в каком-то месте (./myprogram)

Вот мой код

strcpy(args, "gnome-terminal");
strcpy(args, "-e 'sh ./spout");
strcat(args, "' ");
system(args);

Но это дает следующую ошибку во время выполнения.

sh: 0: Illegal option -

0

Решение

Помимо того факта, что могут быть более элегантные решения, чем вызов терминала через C ++ для выполнения программы, вы можете воспользоваться одним из них:

станд :: строка

Наиболее очевидным решением является использование std::string который обеспечивает перегруженный оператор + согласовать строки.

#include <string>

std::string args = "gnome-terminal ";
args += "-e 'sh ./spout";
args += "' ";

станд :: stringstream

std::stringstream это еще один вариант:

#include <sstream>
#include <string>

std::stringstream ss;
ss << "gnome-terminal ";
ss << "-e 'sh ./spout";
ss << "' ";
std::string args = ss.str();

strcat ()

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

#include <cstring>

strcpy(args, "gnome-terminal");
strcat(args, "-e 'sh ./spout");
strcat(args,  "' ");

Обратите внимание, что вторая версия нуждается в более внимательном рассмотрении выделенной памяти для args, Увидеть strcat () для дополнительной информации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]