Спасибо за ответы.
Программа предназначина для считывания магнитных карточек персонала с
нерегулярным рабочим днем, и записи в базу данных информации о их
приходе и уходе. Потом на основе этой информации расчитывается их
зарплата. Рабочий день может начинаться и кончатся в любое время дня и
ночи, речь идет о типографии.
Читалки магнитных карточек предполагается пока использовать 2,
соответственно для выхода и входа. Запись ведется в базу данных,
возможно в лог файл, и на принтер. Принтер в данном случае
рассматривается как дублирующий узел, для создания hardcopy в наглядной
форме. Не бирюльки же считаем, а зарплату, человек должен видеть что его
"посчитали".
Писать свой спулер (для данной задачи) не интересно, поэтому я решил
использовать что-то стандартное, например cups (одним махом решая
пробелму распечатки на удаленном принтере). Установил, принтер завелся
со второго раза, работает удовлетворительно, но я совершенно не понимаю
с какой стороны к этому делу подступится на предмет распечатки не файла
(как заведено) а string.
Victor Wagner escribió:
Вроде бы само понятие SPOOL (Simulation of pereferial operations
on-line) не рассчитано на то, что некоторая задача захватывает ресурс
надолго и печатает в час по чайной ложке.
Согласен, но никто захватывать ресурс не собирается. Большую часть
времени ресурс свободен, на хосте одновременно вертится несколько (по
крайней мере две) копий программы, как только у какой-то копии
появляется о чем сообщить миру, она подает строчку на принтер.
Важно чтоб они при этом друг друга не перебивали (риск мизерный, но
реальный), ничье сообщение не потерялось, и программа продолжала
работать даже при отсутсвии принтера.
Данная задача больше напоминает по логике своей работы вывод на консоль.
Может быть в эту сторону посмотреть? В ядре есть опция Enable console on
line printer.
Мне приходило такое в голову, операция действительно напоминает консоль,
но не то.
Иван Лох escribió:
> А нужен ли тут спулер? Он скорее для многозадачности... Я бы назвал
> необходимую вещь скорее буфером. FIFO который смотрит на состояние
> принтера (есть библиотеки на C на Perl и т. д.) или может быть
> даже на proc, а потом тупо печатает в порт.
Посмотреть на состояние принтера конечно можно, да толку? Придется
отдельно менеджер печати писать, а это как раз то чего я пытаюсь избежать.
> Я правда уже не помню
> может ли матричный принтер сообщить что у него кончилась бумага.
Может. Кроме того он должен потреблять не больше пары листов в день, а я
туда ящик трактора заправлю :) на 10 лет хватит.
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]