C++ 如何在c+;的单独终端中打开程序+;密码?
我想以编程方式执行以下任务C++ 如何在c+;的单独终端中打开程序+;密码?,c++,ubuntu,gnome-terminal,C++,Ubuntu,Gnome Terminal,我想以编程方式执行以下任务 在C++中,打开一个终端(系统(GNOME终端)); C++中的LI> 运行位于某个位置的程序(./myprogram) 这是我的密码 strcpy(args, "gnome-terminal"); strcpy(args, "-e 'sh ./spout"); strcat(args, "' "); system(args); 但它在运行时给出了以下错误 sh: 0: Illegal option - P>除了通过C++调用一个终端来执行一个程序,可能还有更优
strcpy(args, "gnome-terminal");
strcpy(args, "-e 'sh ./spout");
strcat(args, "' ");
system(args);
但它在运行时给出了以下错误
sh: 0: Illegal option -
<> P>除了通过C++调用一个终端来执行一个程序,可能还有更优雅的解决方案,你可以和其中的一个进行: std::string 最明显的解决方案是使用
std::string
,它为concat字符串提供重载运算符+
#include <string>
std::string args = "gnome-terminal ";
args += "-e 'sh ./spout";
args += "' ";
strcat()
如果你想使用C字符串,你可以使用类似的东西。请注意,我不建议这样做
#include <cstring>
strcpy(args, "gnome-terminal");
strcat(args, "-e 'sh ./spout");
strcat(args, "' ");
#包括
strcpy(args,“gnome终端”);
strcat(args,“-e'sh./喷口”);
strcat(args,“”);
请注意,第二个版本需要仔细查看
args
的分配内存。有关更多信息,请参阅。第二个strcpy将覆盖第一个strcpy。为什么不使用std::string?
#include <cstring>
strcpy(args, "gnome-terminal");
strcat(args, "-e 'sh ./spout");
strcat(args, "' ");