Forum Webscript.Ru

Программирование => PHP => Тема начата: archy от 20 Февраля 2002, 10:27:28

Название: popen в php
Отправлено: archy от 20 Февраля 2002, 10:27:28
имеем php 4.0.6 на redhat 7.2...
тут http://www.ru.php.net/manual/ru/function.popen.php (http://www.ru.php.net/manual/ru/function.popen.php) прочитал, что php начиная с 4 версии умеет открывать процессы, в которые можно писать и читать ($fd=popen("чего-то","w+");) но у меня ругается, что Invalid argument... Если кто сталкивался подскажите плиз как лечить ил другой способ...
Название: popen в php
Отправлено: DimovD от 20 Февраля 2002, 10:40:05
незнаю как насчёт записи в процесс, а вот чтение
$fp = popen ("ping 127.0.0.1", "r");
у меня работает без вопросов.
Название: popen в php
Отправлено: archy от 20 Февраля 2002, 12:04:10
дык, если "r" читает, если "w" пишет без проблем, а по "w+" должен читать и писать одновременно... но у меня никак :(
Название: popen в php
Отправлено: от 24 Февраля 2002, 04:51:20
archy, а доку хорошо читал? :)

в описании, чего возвращает функция popen, четко ж написано:

Returns a file pointer identical to that returned by fopen(), except that it is unidirectional (may only be used for reading or writing)...

дословно: возвращает дескриптор файла, аналогично fopen(), за исключением того, что этот дескриптор "однонаправленный"
{ ВНИМАНИЕ! дальше объясняется, что означает "однонаправленный" ;) }
(может быть использован только для чтения ИЛИ только для записи)

...

и что ж ты от нее болезной хочешь? :) ну, не умеет она ЭТО, не умеет :)
Название: popen в php
Отправлено: archy от 25 Февраля 2002, 15:57:10
доку читал очень внимательно.... но, ползем по ссылке http://www.ru.php.net/manual/ru/function.popen.php, скроллим вниз и читаем мессадж от
matthew@leftcoast.com
04-Aug-2000 02:46
PHP4 appears to allow w+ for reading and writing..

может кто-нибудь объяснит.... или они там тоже плохо доки читают... :)
если есть другой способ, буду рад услышать!
Название: popen в php
Отправлено: Oak от 25 Февраля 2002, 20:52:43
вообщето w+ идеологически лсожная штука - если ты ошибешься с порядком операций (что должно быть первым - чтение или запись и сколько надо читать/писать)  , то твоя или чужая прога заблокируется и все/....  DeadLock :)

А вот это написано там же ;)

Цитировать

I found that PHP4.0.4pl1 on Redhat 6.2 does not allow \'w+\' flag in popen()
to create a bi-directional pipe. Just use plain \'r\' instead!


Какого OS-а гоняешь?
Название: popen в php
Отправлено: archy от 26 Февраля 2002, 08:07:19
выше же написано RedHat 7.2 php 4.0.6... ну да черт с ним... тогда может ктонить подскажет, реально ли написать на php скрипт, который будет работать как надстройка над прогой, которая работает со стандартным вводом выводом?