Я пытаюсь понять, используя каналы в C, в частности, писать и читать целые числа.У меня есть родительский процесс, который создает 3 дочерних процесса.Два дочерних процесса вычисляют числа и записывают их в канал.Третий процесс читает из обеих каналов и затем отображает.Звучит просто, верно?
Я нашел этот пост: Как отправить целое число с конвейером между двумя процессами! о том, как отправлять целые числа через каналы и следовать за ним, но я не получаю правильный вывод,
Редактировать: для дальнейшего пояснения я запускаю каналы следующим образом:
int p1[2]; //pipe1
int p2[2]; //pipe2
pipe(p1); //intialize pipe1 for between process 1 & 3
pipe(p2); //initialize pipe2 for between process 2 & 3
После некоторой отладки я замечаю, что в канал записывается неправильный номер.Вот как я записываю int в канал:
int c0 = 18;
write(p2[1], &c0, sizeof(c0));
, и вот как я читаю:
int disp[4];
read(p1[0], &disp[0], sizeof(disp[0]));
и т. Д., Пока массив не заполнится.
Теперь вместо записи чего-то вроде 14 в канал он записывает большое число, например 17462. Я предполагаю, что он пишет адрес, верно?Если так, то как бы я записал фактическое целое число в трубу?Должен ли я удалить '&' из утверждений, потому что это приводит к ошибкам приведения.Любые советы, советы, комментарии всегда приветствуются.Благодаря.