我想知道你是否可以拥有它当你去点击linux中的程序时,它总是会自动显示正在显示的信息的命令行,或者我决定使用ncurses作为接口。如果这是一个系统特定的电话,或者你可以用ncurses吗?因为我的一半程序将通过终端。
由于
答案 0 :(得分:1)
由于nitt不允许我修改他的代码片段,我发布了一个纠正的片段,以防有人想要使用它:
#include <cstdio>
#include <unistd.h>
#include <iostream>
int main(int argc, char* argv[])
{
if (isatty(0))
{
std::cout << "Hello, World!" << std::endl;
for (int i=0; i<argc; i++)
std::cout << "arg: " << i << "\t" << argv[i] << std::endl;
std::cout << "Press return to continue . . ." << std::flush;
std::cin.get();
}
else
{
const char* args[argc+3], **it=args;
*it++ = "gnome-terminal";
*it++ = "-x";
it = std::copy(argv, argv+argc, it);
*it++ = 0;
if (-1 == execvp("gnome-terminal", (char* const*) &args[0]))
perror("exec");
}
}
答案 1 :(得分:0)
是的,只需使用您的应用调用终端即可。例如:
rxvt -e myapp
启动运行您应用的终端。你也可以使用xterm。如果你想使用宽字符/ unicode,我推荐rxvt-unicode。
您可以将其放在带有图标的.desktop文件中,然后将其放在系统菜单中。
答案 2 :(得分:-1)
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int fileExists(string x321) {
ifstream x123 (x321.c_str());
string x213;
x123 >> x213;
if (x213 == "") {
return false;
} else {
return true;
}
}
int createConsole(string fname) {
if (fileExists("~tmp") == false) {
ofstream tmp ("~tmp");
tmp << "tmpfile";
fname = "gnome-terminal -e " + fname;
system(fname.c_str());
system("exit");
return 0;
}
remove("~tmp");
return 1;
}
int main(int argc, char** args) {
createConsole(args[0]);
cout << "Hello, World!" << endl;
cout << "Press return to continue . . .";
cin.get();
}
注意“createConsole”和“fileExists”功能。我自己写了这个。