我需要一个后台程序C ++

时间:2009-01-15 10:06:32

标签: c++ background

我创建了这个程序:

//Includes....
int main()
{
   ifstream readfile("File.txt");
   string str;
   while(1)
   {
      getline(readfile,str);
      system("cls");
      Sleep(10000);
   }
}

这只是一个程序,每10秒从文件“File.txt”中读取一行

我想让它在背景上工作,我该怎么做?

8 个答案:

答案 0 :(得分:3)

如果这是UNIX,你可以使用&符“&”从shell运行程序。在节目名称之后。

答案 1 :(得分:3)

此示例为您隐藏控制台窗口:


#include "windows.h"
#include fstream 
#include string
#include stdio.h

using namespace std;


int main()
{
    WCHAR path[260];

    GetModuleFileName(NULL,path,260);

    HWND console = FindWindow(L"ConsoleWindowClass",path);

    if(IsWindow(console))

    ShowWindow(console,SW_HIDE); // hides the window

    //---------------------------------------------------

    ifstream readfile("File.txt");
    string str;
    while(1)
    {
        getline(readfile,str);
        system("cls");
        Sleep(10000);
    }

    //----------------------------------------------------

    if(IsWindow(console))

        ShowWindow(console,SW_SHOW); // shows the window

}

答案 2 :(得分:1)

依赖于平台。但我认为你正在使用Windows因为“cls”命令。 为什么你不能只是启动一个新的命令提示符并执行正确的.exe文件。然后只需最小化程序并执行您应该执行的操作。如果想要自动化启动阶段(如linux / unix中的cron),请使用内置的windows调度程序。

答案 3 :(得分:1)

如果您想要一个不使用控制台窗口或任何其他窗口的(非服务)程序,请将main()更改为winmain()。尽管如此,获取命令行参数还是比较复杂的。

答案 4 :(得分:0)

我很抱歉,但我不确定我知道你的意思......据我所知(如果我错了请纠正我)没有办法运行一个简单的C(++)没有控制台窗口的程序。但是,如果你希望它以一种几乎不使用资源的方式“休眠”,那么可以通过检查当前时间并将其与你完成上次阅读时的时间进行比较来实现。

睡眠功能通常使用比这更多的资源,但它也可以正常工作,所以如果资源上限不是非常重要,那么它也会做得很好。

希望这会有所帮助。

答案 5 :(得分:0)

如果您从Dos控制台启动程序,则可以使用命令start \B myprogram.exe,该命令或多或少等同于unix&符号。但是,您需要保持控制台处于打开状态以保持程序运行。

另一个解决方案是将您的应用程序转换为Windows服务,但是您必须重写(或换行)您的应用程序。

答案 6 :(得分:0)

如果你想要这样,因为你正在记录某种输出并希望查看更改,你可以使用TextPad等编辑器,它会在文件发生变化时自动重新加载。

但是你没有说明为什么要这样,所以这可能不适合你的情况。

答案 7 :(得分:-1)

正确的方法是使用Windows服务,Google上有关于如何执行此操作的足够信息。