我如何在单独的终端中从 C++ 代码打开程序?
How do i open a program in a separate terminal from c++ code?
我想以编程方式执行以下任务。
- 在 C++ 中,打开终端 (system("gnome-terminal");)
- 在 C++ 中,
运行 位于某个地方的程序 (./myprogram)
这是我的代码
strcpy(args, "gnome-terminal");
strcpy(args, "-e 'sh ./spout");
strcat(args, "' ");
system(args);
但它在 运行 时间给出了以下错误。
sh: 0: Illegal option -
除了可能有比通过 C++ 调用终端来执行程序更优雅的解决方案之外,您可以使用以下之一:
std::string
最明显的解决方案是使用 std::string
,它提供重载运算符 +
来连接字符串。
#include <string>
std::string args = "gnome-terminal ";
args += "-e 'sh ./spout";
args += "' ";
std::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()。
我想以编程方式执行以下任务。
- 在 C++ 中,打开终端 (system("gnome-terminal");)
- 在 C++ 中, 运行 位于某个地方的程序 (./myprogram)
这是我的代码
strcpy(args, "gnome-terminal");
strcpy(args, "-e 'sh ./spout");
strcat(args, "' ");
system(args);
但它在 运行 时间给出了以下错误。
sh: 0: Illegal option -
除了可能有比通过 C++ 调用终端来执行程序更优雅的解决方案之外,您可以使用以下之一:
std::string
最明显的解决方案是使用 std::string
,它提供重载运算符 +
来连接字符串。
#include <string>
std::string args = "gnome-terminal ";
args += "-e 'sh ./spout";
args += "' ";
std::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()。