Я пытаюсь передать числа между процессами в C ++, используя каналы. Я ограничен в размере записи, который я должен использовать, чтобы использовать unsigned int, чтобы получить максимальный размер для 4 байтов.
Я хочу реализовать проверку ошибок как на чтение, так и на запись, например, если мой процесс слушателя не прочитал все четыре (4) байта или писатель не записал все 4 байта за раз, чтобы читать снова, пока я не напишу / прочитаю точно 4, перемещая указатель в уже записанных / прочитанных файлах, пока я не укажу нужный размер.
Это мой код для массивов символов (строк), которые считывают куски 'buffer_size' строки 'content_size' из канала и записывают их в указатель файла 'fp':
while(size_read < content_size)
{
nread
memset(chunk, '\0', buffer_size+1);
if ((content_size-size_read)<buffer_size) // for the last read, try to read only until the 'content_size' byte, instead of buffer_size
{
nread=read(fd, chunk, (content_size-size_read));
}
else // all the other times, read buffersize
{
nread=read(fd, chunk, buffer_size);
}
if(size_read+nread==content_size)
{
// fwrite(chunk,nread,1,fp);
fwrite(chunk,strlen(chunk),1,fp);
break;
}
size_read+=nread;
if ((content_size-size_read)<buffer_size) //
{
while(nread<(content_size-size_read))
{
nread+=read(fd, chunk+nread, (content_size-size_read)-nread);
// size_read+=nread; // edw
if(size_read==content_size)
{
done=true;
break;
}
}
fwrite(chunk,strlen(chunk),1,fp);
// size_read+=nread;
}
else
{
how_much_i_will_have_read_at_end= buffer_size-nread;
while(nread<buffer_size)
{
nread+=read(fd, chunk+nread, buffer_size-nread);
if(size_read==content_size)
{
done=true;
break;
}
}
// fwrite(chunk,buffer_size,1,fp);
fwrite(chunk,strlen(chunk),1,fp);
size_read+=how_much_i_will_have_read_at_end;
}
if(done) break;
}
Как я могу реализовать что-то подобное с целыми числами или числами в целом?