如何在与 c++ 代码不同的终端中打开程序?

How do i open a program in a separate terminal from c++ code?

本文关键字:终端 打开程序 c++ 代码      更新时间:2023-10-16

我想以编程方式执行以下任务。

  1. 在C++中,打开一个终端(系统("gnome-terminal");)
  2. C++, 运行位于某个地方的程序 (./myprogram)

这是我的代码

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

但它在运行时给出了以下错误。

sh: 0: Illegal option -

除了可能还有比通过C++调用终端来执行程序更优雅的解决方案之外,您还可以使用以下解决方案之一:

标准::字符串

最明显的解决方案是使用std::string它提供了重载运算符+来连接字符串。

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

标准::字符串流

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()。