如何在linux应用程序中显示终端?

时间:2011-04-10 01:16:16

标签: c++ linux terminal show ncurses

我想知道你是否可以拥有它当你去点击linux中的程序时,它总是会自动显示正在显示的信息的命令行,或者我决定使用ncurses作为接口。如果这是一个系统特定的电话,或者你可以用ncurses吗?因为我的一半程序将通过终端。

由于

3 个答案:

答案 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”功能。我自己写了这个。