Мне нужна фоновая программа C++

Я создал эту программу:

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

Это просто программа, которая каждые 10 секунд читает строку из файла "File.txt"

Я хочу, чтобы он работал в фоновом режиме, как я могу это сделать?

что вы имеете в виду под "работой над фоном"? Если он работает с консольным вводом-выводом, он также не может работать в фоновом режиме (в смысле управления заданиями Unix).

Alnitak 15.01.2009 13:09

Пожалуйста, уточните, где вы хотите запустить его в качестве фонового процесса. Это линукс, винда и тд?

Spoike 15.01.2009 13:11

Я предполагаю, что Windows с этим вызовом системы ("cls"), но все еще не понимает, что означает вопрос.

Alnitak 15.01.2009 13:17

Я вижу, вы пытались сделать консоль программы, чтобы исчезнуть и работать в фоновом режиме Это тот же вопрос, перефразированный?

prakash 15.01.2009 13:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
8 985
8

Ответы 8

Зависит от платформы. Но я думаю, что вы используете окна из-за команды "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 достаточно информации о том, как это сделать.

Другие вопросы по теме