Rechtstreeks schrijven naar /dev/lp0 is af te raden: Ten eerste werkt het niet als gewone gebruiker, daarnaast maak je zo geen gebruik van de printer-wachtrij, waardoor het fout gaat als er al een ander document aan het printen was.
Aan de code van Joshua822 te zien gaat het hier om een command-line programma. Het simpelste is dan - zoals track ook al zegt - om /usr/bin/lp uit te voeren. Dat werkt op praktisch elke Unix, en je introduceert geen dependencies van Qt of GTK.
Onderstaand voorbeeldje start /usr/bin/lp als childproces en stuurt "Hello, world!" daarheen via een pipe.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main (int argc, char *argv[])
{
char buf[1024];
int p[2];
pipe(p);
if (fork()) /* parent */
{
close(p[0]);
strcpy (buf, "Hello, world!\n");
write(p[1], buf, strlen(buf));
}
else { /* child */
dup2(p[0], 0); /* stdin is now read from pipe */
close(p[0]);
close(p[1]);
execl("/usr/bin/lp", "lp", NULL);
}
return 0;
}