Нужно организовать межпроцессное взаимодействие между программой на C++ и программой на Perl. Причем прога на С++ - родительский процесс, прога на Perl - дочерний.
Между дочерним и родительским процессами легче всего организовать обмен через неименованные каналы (pipe). На С++ этоя сделаю легко. А здесь как?
Прога на С++ (parent.cpp):
pipe (fd);
int p = fork ();
if (p == 0)
{
while (1)
{
write (fd [0], "HELLO", sizeof ("HELLO"));
}
exit (0);
}
else
{
if (execl ("child", NULL) == -1)
{
printf ("Error\n");
exit (1);
}
}
Прога на Perl (child.pl):
#!/usr/bin/perl -w
open (fHandler, "parent |");
while (1)
{
$text = readline (*fHandler);
print $text;
}
close (fHandler);
Если запустить 'parent', то в системе появляется больше сотни процессов 'child', их состояние - piperd. Если не предпринять никаких мер, система повиснет. Если запустить 'child' - тоже самое. Значит проблема в коде на Perl. HELP PLEASE.
С уважением
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум pipe()+exec() (2019)
- Форум Непонимаю я как открыть пайп (2014)
- Форум Канал загадок (2007)
- Форум Чтение выхлопа процесса без ожидания его завершения (2019)
- Форум Не могу разблокировать pipe (2004)
- Форум разные выводы (2017)
- Форум Потоки (2017)
- Форум Perl HTTP::Daemon глючит? (2003)
- Форум создание дочерних процессов_ (2010)
- Форум fork(), exec(), wait() (2020)