控制台应用程序无法在Linux上运行

时间:2014-09-13 21:47:54

标签: c++ linux

我在linux上工作,我在我的第一个c ++项目中使用code :: blocks。 main.cpp:

#include <iostream>
using namespace std;

int main()
{
    cout<<"Hello World"<< endl;
    return 0;
}

该项目已经构建并调试良好。它工作,但当我按照可执行文件的路径并从调试文件夹运行它时,应用程序不显示任何事情 问题是什么,解决方案是什么? (此问题仅适用于控制台应用程序)

1 个答案:

答案 0 :(得分:1)

您可能来自MS-Windows背景。

在Windows中,当您双击控制台程序时,系统会自动创建一个控制台窗口,并将该程序的标准输入和输出流连接到该控制台。

在Linux中,没有“控制台程序”或“GUI程序”这样的东西。只有程序可以读取/写入标准流,执行GUI的程序,或同时执行这两个程序。

结论是你的程序最有可能完美地找到,并且int打印到它的标准输出......

这个标准输出导致什么?这将是另一个问题......但无论如何我都会尝试回答。它将继承父进程的标准输出,即“文件管理器”。如果碰巧从终端运行(不太可能),那么你会在那里看到输出。如果它是从桌面会话启动(可能),那么它取决于会话管理器首先对STDOUT做了什么。他们中的大多数将其重定向到主文件夹中的隐藏文件。您可以尝试运行$ grep "Hello World" ~/.*并查看会发生什么。

如果要通过双击运行终端窗口,则应为该程序编写.desktop条目(如Windows快捷方式)并设置Terminal=true。也许您的“文件管理器”已经有了自动生成.desktop文件的工具。

或者,您可以编写一个shell脚本来启动xtermgnome-terminalkonsole ...以及您的程序。