Я пишу программу на c ++ под Linux, где дочерний процесс должен записать два длинных значения в канал, а родительский процесс должен их прочитать. До сих пор мне только удается настроить два (именованных) канала для этого и записать каждый из них записью (fd1, & value1, sizeof (long)) и прочитать его чтением (fd1, & value1, sizeof (long)).
Лучше было бы использовать только одну трубу для обоих, но я не мог понять, как это сделать.
Я пытался:
write(fd1,&value1,sizeof(long));
write(fd1,&value2,sizeof(long));
и два чтения, но это, кажется, приводит к тому, что процессы блокируются и ждут друг друга.
Я был бы очень рад, если бы кто-нибудь дал мне подсказку, как это реализовать.
Возможное РЕШЕНИЕ: я записал все значения в массив (потому что я знал, сколько их), тогда мне понадобился только один вызов wire / read.