Tak bohužel mám ještě jeden problém. Program mám více méně hotový, teď dělám testy a zjistil jsem následující problém. Když program pustím ve standardním režimu, tak šlape bez chybičky. Když ho ale pustím jako daemon, tak se při načítání dat ze seriového portu občas ztrácí znaky. Co jsem vypozoroval, tak většinou když mi běží ještě něco jiného, např. když pustím rozbalování RARu. Přitom CPU mi nejede na 100%, aspoň správce úloh to tvrdí. Nevíte někdo co by se s tím dalo dělat? Přikládám část programu, kde obsluhuji seriovou linku:
unsigned short int inpPole[95];
float outPole[12];
int citac = 0;
int rd = 0;

#define BAUDRATE B9600
#define BUFSIZE 95
char buf[BUFSIZE]; 
int ReadData(char dname[255])
{
   char znak;
   int i = 0;
   int err = 0;
   int vel = 0;
   bool start = false;

   int port = open("/dev/ttyUSB0", O_RDONLY | O_NOCTTY); // | O_NDELAY);

   struct termios port_settings;      // structure to store the port settings in

   cfsetispeed(&port_settings, B9600);    // set baud rates
   cfsetospeed(&port_settings, B9600);

   port_settings.c_cflag &= ~PARENB;    // set no parity, stop bits, data bits
   port_settings.c_cflag &= ~CSTOPB;
   port_settings.c_cflag &= ~CSIZE;
   port_settings.c_cflag |= CS8;


//    port_settings.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
//    port_settings.c_lflag = ICANON;

   tcflush(port, TCIFLUSH);
   tcsetattr(port, TCSANOW, &port_settings);    // apply the settings to the port
//configure_port

   while (1)
   {       
       rd = read(port,buf,BUFSIZE);
       if ((rd>0) && (rd<96))
       {
          for (i=0; i (znak);
              inpPole[i+vel] = 0x00ff & inpPole[i+vel];
          }
          vel += rd;
       }
   }
   close(port);
   return 0;
}
Načítám sekvence 48 znaků a ukládám do inpPole, ale, jak jsem psal, když to běží jako daemon, tak mi tam občas nějaký znak chybí. Předem díky za pomoc.