Мне нужно получать информацию о разных процессах через 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);
}