nixp.ru v3.0

21 января 2017,
суббота,
20:33:04 MSK

DevOps с компанией «Флант»
Longobard написал 24 сентября 2004 года в 23:39 (449 просмотров) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Ситуация такая: есть пайп. В дочернем процессе создаем обьект класса xxx:

xxx * obj = new xxx;

есть пайп pipe.

Как мне передать этот обьект от дочернего процесса родительскому через пайп? Клинит меня че-та. Пробовал втупую — не работает. Пробовал преобразовывать обьект в void* и пересылать — тоже не работает.

Uncle Theodore

Дык, имхо, никак. Напиши для класса функцию записи в пайпу и функцию чтения из пайпы (как если бы ты записывал в файл и читал из него). Пайпа-то не знает, что у тебя объект, а не просто последовательность байтов…

Good Luck,

UT

Uncle Theodore

Кстати о птичках. Твой дочерний процесс создает объект и вешает на obj ссылку на область памяти с этим объектом. Но. В зависимости от того, как создан сам дочерний процесс, область памяти с объектом может быть и недоступна папаше (в случае форка это так, а в случае pthread’а — не так, но в случае pthread’а тебе и пайп не нужен). То бишь, передавай объект, а не ссылку на него.

Good luck,

UT

Поэлементно копируй поля в буфер, передавай буфер и парси его, что сложного-то? Ну или shared memory.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.