Дорогие друзья, это все не годится. Принтер включать и выключать - накладно(он тормозной, кроме того HAL медленно его поднимает). Остановка CUPS же не очищает буфер принтера.
А кто производитель принтера, и на каком языке он принимает задания? Если принтер поддерживает PJL, то задания можно отменять из программ, для этого нужно отправить принтеру команду на языке PJL для отмены задания. Вот только CUPS такое не плддерживает.
anonymous:
Принтер - Epson R200. Язык даже не знаю.
Путем вглядывания в код usblp удалось добиться нужного результата:
#include <sys/ioctl.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
main() {
#define IOCNR_SOFT_RESET 7
int fd = open("/dev/usb/lp0", O_RDONLY), rc;
if (fd == -1) {
fprintf(stderr, "could not open printer device due to: %s\n", strerror(errno));
return -1;
}
rc = ioctl(fd, _IO('P',IOCNR_SOFT_RESET), 0);
printf("Performed with status %d (%s)\n", rc, rc?strerror(rc):"OK");
close(fd);
return 0;
}
Еще бы найти универсальное решение, желательно из GUI...