|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Semenov 2:5020/400 17 May 2000 11:12:58 To : All Subject : Bidirectional Communication with Another Process (Win32(win2k) AP5.6) --------------------------------------------------------------------------------
Здравствуйте All!
Кто-нибудь добился subj? Hадо запустить другой процесс, писать ему в
stdin, читать его stdout.
Принципиальных сложностей не вижу, но:
1. Второй способ из perlipc Comm.pl - она вообще есть под Win32? Я не
нашел.
2. Первый способ из perlipc $pid = open3(*Writer, *Reader,
*Errors,"cat -u -n" );
2а. 'dir' в качестве комманды отрабатывает, но в Reader и Errors
пустые, весь
вывод плюхается на экран.
2б. cat запускается и висит в списке процессов, open2 (open3 тоже) не
возвращается, чего-то ждет.
Делаю open[23] из форкнутого childа. Записываю все что хотел во
Writer. Закрываю Writer.
Читаю Reader и Errors - снова пусто. Жду childа - тот ждет open -
все висит. Прибиваю cat.exe
в списке процессов - все естественно завершается - я ничего не
получил.
Readerы, Writerы и Errorsы делаю так: my $Reader = new FileHandle;
В манах написано, что все проблемы от буфферизации - но у меня до
этого дело даже не доходит.
Почему open[23] ждет завершения программы? Почему cat не
завершается по закрытии Writerа?
Похоже cat вообще к нему не подключается.
3. Должен же быть способ! Как? Ведь перехват одного из
(stdin,stdout,stderr) делается легко просто
openом и работает отлично. Какая разница сколько хэндлов?
Конкретная цель: очень желательно запускать pgp без создания временных
файлов. Может
есть более другие способы?
--
Спасибо,
С уважением,
Александр Семенов <sav@hey.to>
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/186655b2056a7.html, оценка из 5, голосов 10
|