Здравствуйте!
При реализации функций печати текстового редактора у меня возникла следующая проблема. Перед выводом текста на принтер проверяю состояние принтера вот таким образом: 
int check_printer()
{
	int fd, res;
	unsigned char status = 0;
	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	fd = open("/dev/lp0", O_RDONLY);
	if (fd < 0)
	{
		QApplication::restoreOverrideCursor();
		return PRINTER_OFFLINE;
	}
	res = ::ioctl(fd, LPGETSTATUS, &status);
	sleep(1);
	::close(fd);
	QApplication::restoreOverrideCursor();
	// out of paper
	if (status & LP_POUTPA)
		return PAPER_EMPTY;
	if (!(status & LP_PERRORP))
		return PRINTER_ERR;
	if (!(status & LP_PSELECD))
		return PRINTER_OFFLINE;
	if (status & LP_PBUSY)
		return PRINTER_BUSY;
	
	return PRINTER_OK;
}
При этом программа нормально отслеживает включен принтер или нет и наличие бумаги в лотке принтера. Но все это лишь до того момента, пока принтер не находится  в режиме энергосбережения. Когда принтер засыпает, программа не получает состояния принтера и выводит статус "принтер не отвечает". Если не проверять состояние принтера, документ выводится нормально. Но в таком случае нельзя отследить наличие бумаги и включение принтера. Можно ли решить эту проблему? Каким образом можно отследить "спящий" принтер и "разбудить" его перед печатью? И если И если можно то каким образом? Разработка ведется под Linux с ядром 2.6 в Qt версии 4.4.3. Заранее спасибо.