Спасибо за ответы.Программа предназначина для считывания магнитных карточек персонала с нерегулярным рабочим днем, и записи в базу данных информации о их приходе и уходе. Потом на основе этой информации расчитывается их зарплата. Рабочий день может начинаться и кончатся в любое время дня и ночи, речь идет о типографии. Читалки магнитных карточек предполагается пока использовать 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 лет хватит.