Запись строк из FIFO в файл журнала иногда приводит к вставке данных rubbi sh - PullRequest
1 голос
/ 05 января 2020

Мне нужно получать информацию о разных процессах через FIFO, называемый pipe. Если я распечатываю информацию, полученную в процессе, все выглядит хорошо. После вставки в файл журнала я получаю несколько квадратов sh плюс данные, которые я добавил, и я действительно не знаю, откуда они берутся.

Часть моего кода, если я распечатываю полученное сообщение правильное сообщение, поэтому оно должно иметь отношение к fprintf:

int fifoFd =  open("FIFOTest2",O_RDONLY);
    if(read(fifoFd, message, 200)>0){
    fprintf(logFile,"%s",message);
    fflush(logFile)

Моя функция fifo_write:

void fifo_write(char * threadMessage)
{

  int fifoFd = open("FIFOTest2",O_WRONLY);

  char message[200];
  memset(message,0,sizeof(message)); //added because otherwise some bytes of message were uninitialised -> valgrind error Syscall param write(buf) points to uninitialised byte(s)
  logNumber++;
  snprintf(message,199,"%d %ld %s\n",logNumber, time(NULL),threadMessage);
  write(fifoFd,message,199);
  close(fifoFd);
}
...