Код на C для выполнения файла каждый час

#c #windows

#c #Windows

Вопрос:

В настоящее время я столкнулся с проблемой, когда мне нужно запускать пакетный файл каждый час, может ли кто-нибудь предоставить код spinet, который будет запускать назначенный файл каждый час, например, myfile.bat ?

Комментарии:

1. К сожалению, у меня нет службы планировщика задач, доступной для использования, поэтому я не могу устанавливать задачи

2. Мне нравится иногда использовать spinet для выполнения файлов

Ответ №1:

Это не то, что вы решаете с помощью постоянно включенного процесса. Для этого следует использовать запланированную задачу. Это решает все проблемы за вас.

Если вам абсолютно необходимо было сделать это в вашем собственном коде, самым простым решением является Sleep() функция. Но я настоятельно не советую использовать такой подход.

Комментарии:

1. К сожалению, у меня нет этой службы, доступной для использования

2. что вы имеете в виду? Конечно, на каждом компьютере с Windows выполняются запланированные задачи.

3. Среда была сильно изменена для обеспечения безопасности

4. Не могли бы вы привести пример метода Sleep (), используемого в моем случае?

5. ну, вы называете переход в спящий режим 60*60*1000 миллисекунды, и процесс перейдет в спящий режим на час. Каждый раз, когда он возвращается к жизни, запускайте свой скрипт и снова переходите в спящий режим.

Ответ №2:

CreateWaitableTimer в сочетании с любой из функций ожидания

Ответ №3:

В зависимости от вашей системной среды вы можете легко выполнить это с помощью cronjob.

С помощью cronjob вы можете запланировать его на любую минуту / час / день / и т.д…

Вы можете указать cronjob для выполнения путь к функции, в которую вы можете поместить exe-файл на c для запуска необходимой вам службы.

Например: у меня каждый час запланировано cronjob для свертывания php-функции (это временное решение, обычно я просто запускаю php-скрипт) для отправки электронных писем на предпочитаемом пользователем сервере.

0 * * * * curl http://mydomain.com/my_email_scheduler.php

5 цифр, предшествующих вызову моей функции, определяют запланированное время

[минута] [час] [день] [месяц] [день недели] командная строка, подлежащая выполнению

Руководство по работе с Cron

РЕДАКТИРОВАТЬ :: только что заметил ваш комментарий о том, что у вас нет доступного планировщика задач.. Затем я бы предложил переводить поток в режим ожидания на каждый час и выполнять функцию при пробуждении.

Комментарии:

1. Блин — только что увидел ваш комментарий о том, что у вас нет доступного планировщика… Можете ли вы перевести поток в спящий режим, чтобы он просыпался каждый час для выполнения функции?

2. Спасибо, у меня есть порт cron для Windows, который называется nncron

3. О, хорошо, так вы сможете это сделать? Я знаю, что в Windows есть собственный планировщик, но я им не пользовался.. Что-то, что вы, возможно, захотите проверить? Если nncron не работает хорошо, тогда сделайте cronn!

4. безопасность означает, что вы не можете использовать планировщик задач, но cron в порядке! Поди разберись?!

5. Да, Дэвид — кто бы мог подумать… = P, Oh и 1 за то, что поняли, что мой ответ издевается над вашим оригиналом, но мои приняты, извини, брат.

Ответ №4:

Альтернативой использованию режима ожидания было бы использование таймеров. Это означает, что вам нужно пройти через процесс создания графического интерфейса пользователя (возможно, оно того вообще не стоит, если это так просто, как кажется) <- Виноват. Одним из преимуществ этого является то, что вы можете убедиться, что что-то выполняется каждые полчаса, а не каждые полчаса время выполнения для чего бы то ни было.

Комментарии:

1. Нет, я не думаю, что вам нужно создавать графический интерфейс для использования таймеров.

2. @Andreas Rejbrand, Поэтому ты этого не делаешь 🙂 Я всегда использовал сообщения WM_TIMER, а не функции обратного вызова, и я совершенно забыл о возможности установить обратный вызов вообще. Сейчас я это исправлю.

3. @Mat Вам даже не нужны функции обратного вызова, вы можете создавать невидимые окна, если пожелаете. Это полезный трюк во многих местах — он позволяет приложениям, не использующим графический интерфейс пользователя, выполнять действия, требующие дескриптора окна.

4. @Mat: Я думаю, что вы можете использовать также окна только для сообщений .

5. Если у вас нет графического интерфейса, зачем настраивать очередь сообщений? Ожидаемые таймеры отлично работают во всех типах приложений (графический интерфейс, консоль, сервис и т.д.)