Page 1 of 1

Job (возможно, будущий аналог cron для Колибри)

Posted: Fri Mar 18, 2011 9:40 am
by SoUrcerer
Очень часто мне нужно следить за временем, запускать программы по расписанию, в общем, нужно что-то вроде будильника.
Чем больше я времени провожу в Колибри, тем больше мне не хватает всяких разных мелочей, которыми я пользуюсь в своем мятном линуксе.
Потому написал маленькую программку, которая выполняет программы в заданное время.
Пока что программа почти ничего не умеет - ни повторяющихся событий, ни будильников по пятницам в 7 утра. Надеюсь, я добавлю это в будущем. Кроме того, программка очень прожорлива по отношению к памяти (это всё потому, что написана с использованием menuetlibc, но в скором времени я переведу ее на newlib).

Итак, встречайте - job. Запускается без параметров, окна не создает, на панели не отображается, только в CPU. Наличие @notify в /rd/1/ очень желательно, иначе вы не получите сверхважных сообщений "File not found" или "Job is done". Для работы программы необходим файл jobs.dat в одной папке с программой, его синтаксис такой:

Code: Select all

09:41
/rd/1/calendar

Первая строка - время (пять байт, если часов менее 12, то первый 0 обязателен).
Вторая строка - запускаемая по расписанию программа.
Enter после второй строки обязателен (потому что запуск с параметрами пока что не поддерживается, какие-то косяки с этим, но обязательно будет).

Пока что всё. В перспективе - поддержка ini-файлов, множества задач и всё такое. :mrgreen:

Re: Job (возможно, будущий аналог cron для Колибри)

Posted: Sun Mar 20, 2011 11:48 am
by s1n
Хорошая работа, молодец.

Re: Job (возможно, будущий аналог cron для Колибри)

Posted: Fri Mar 25, 2011 1:54 pm
by Asper
Sorcerer
Лучше сразу писать на ассемблере.
13Кб это по-моему слишком для такой программы.
Вот посмотри например.

Re: Job (возможно, будущий аналог cron для Колибри)

Posted: Sun Mar 27, 2011 8:34 am
by SoUrcerer
Огого! Круто как! Я так не умею :(
Если бы знал ассемблер - то, наверное, на нем и писал бы...
Вопрос по коду: JOB.done сделан для того, чтобы одна и та же программа несколько раз не запустилась в течении одной минуты?
Что будет, если более 255 заданий будет в файле? Просто лишние не будут разбираться?

Re: Job (возможно, будущий аналог cron для Колибри)

Posted: Mon Mar 28, 2011 3:56 pm
by Asper
Sorcerer wrote:Вопрос по коду: JOB.done сделан для того, чтобы одна и та же программа несколько раз не запустилась в течении одной минуты?
Да.
Sorcerer wrote:Что будет, если более 255 заданий будет в файле? Просто лишние не будут разбираться?
Ты нашёл логическую ошибку. :) Если в ini файле JobsNum будет больше 255, то в результате
JobsNum=JobsNum mod 256
Нужно поставить ограничитель.

Code: Select all

	; Get jobs number
	invoke	ini_get_int, ini_path, aMain, aJobsNum, 0

	cmp eax, 256
	jl       @f
	mov  eax, 255
@@: