Вроде как через /dev/lp* надо.
Можешь посмотреть исходники uisp
Давно уже все сделал. Не надо через /dev/lp, надо через outb.
Тем более темка то устарела ) В простейщем варианте это выглядит так
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/io.h>
main(int argc, char **argv)
{
int par_data;
int PORT;
if (argc!=3).
printf("USAGE: [PORT] [DATA]"), exit(1);
sscanf(argv[1],"%i",&PORT);
if ((par_data<0) || (par_data>255))
fprintf(stderr, "ERROR: DATA must be between 0 and 255"), exit(1);
if (ioperm(PORT,1,1)).
fprintf(stderr, "ERROR: Can't gain access to port %x", PORT), exit(1);
outb((unsigned char)par_data, PORT);
}