Я создал эту программу:
//Includes....
int main()
{
ifstream readfile("File.txt");
string str;
while(1)
{
getline(readfile,str);
system("cls");
Sleep(10000);
}
}
Это просто программа, которая каждые 10 секунд читает строку из файла "File.txt"
Я хочу, чтобы он работал в фоновом режиме, как я могу это сделать?
Пожалуйста, уточните, где вы хотите запустить его в качестве фонового процесса. Это линукс, винда и тд?
Я предполагаю, что Windows с этим вызовом системы ("cls"), но все еще не понимает, что означает вопрос.
Я вижу, вы пытались сделать консоль программы, чтобы исчезнуть и работать в фоновом режиме Это тот же вопрос, перефразированный?





Зависит от платформы. Но я думаю, что вы используете окна из-за команды "cls". Почему вы не можете просто запустить новую командную строку и выполнить правильный файл .exe. Затем просто сверните программу и делайте то, что должны делать. Если вы хотите автоматизировать этап запуска (например, cron в linux / unix), используйте встроенный планировщик для Windows.
Извините, но я не уверен, что понимаю, что вы имеете в виду ... насколько я знаю (поправьте меня, если я ошибаюсь), нет возможности запустить простую программу C (++) без консольное окно. Однако, если вы хотите, чтобы он «спал» таким образом, чтобы почти не использовать ресурсы, то этого можно достичь, проверив текущее время и сравнив его со временем, когда вы завершили свое последнее чтение.
Функция сна обычно использует больше ресурсов, чем это, однако она работает так же хорошо, поэтому, если ограничение ресурсов не очень важно, то она будет работать так же.
Надеюсь, это помогло.
Если бы это была UNIX, вы бы запускали программу из оболочки с амперсандом «&» после имени программы.
Если вы запускаете свою программу из консоли Dos, вы можете использовать команду start \B myprogram.exe, которая более или менее эквивалентна амперсанду unix. Однако вам нужно держать консоль открытой, чтобы программа продолжала работать.
Другое решение - преобразовать ваше приложение в службу Windows, но тогда вам придется переписать (или обернуть) ваше приложение.
Если вы хотите этого, потому что вы регистрируете какой-то вывод и хотите просмотреть изменения, вы можете просто использовать редактор, такой как TextPad, который автоматически перезагружает файл при его изменении.
Однако вы не указали, зачем вам это нужно, поэтому в вашем случае это может не подходить.
Этот пример скрывает для вас окна консоли:
#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
}
Если вам нужна (не служебная) программа, которая вообще не использует окно консоли или какие-либо другие окна, измените main () на winmain (). Однако получение аргументов командной строки немного сложнее.
Правильный способ - использовать службу Windows, в Google достаточно информации о том, как это сделать.
что вы имеете в виду под "работой над фоном"? Если он работает с консольным вводом-выводом, он также не может работать в фоновом режиме (в смысле управления заданиями Unix).