RESPONSE TO IRQ 7
    in Non Real-Time Linux

      //
      // irq.c
      //

      #include <stdio.h>
      #include <fcntl.h>
      #include <sys/ioctl.h>
      #include "lpv.h"

      void main() {

      int fd;
      int i,j;
      unsigned char buff;

      fd=open("/dev/lpv", O_RDWR); [ See NOTE ]
      if(fd<0){
      perror("/dev/lpv: could not open ");
      exit(-1);
      }

      // Enable interrupt
      ioctl(fd,LPV_IRQ,LPV_ENABLE);

      while(1) {

      // Wait for irq (blocking read)
      read(fd,&buff,1);
      // Generate pulse in bit 1 of LPV_OUT
      write(fd,"1",1);
      for(j=0;j<10000;j++);
      write(fd,"3",1);

      }

      // Disable interrupt
      ioctl(fd,LPV_IRQ,LPV_DISABLE);

      close(fd);

      }

      [ NOTE ]
      /dev/lpv is a very simple parallel port driver.
      See code.