panasiai mastom :) pirmame meile pamirsau pasakyti, kad php-to-php komunikacija man taipogi veike kuo puikiausiai (testukas l. panasus i tavo pademonstruota) su fopen'u nuo vakar zaidziu, kolkas be rezultatu kas del windozes - neprioritetine OS - ant jos tik testa papildoma idomumo delei paleidau dabar, gi, mastau visa sita grozi shell'o pagalba realizuoti, o php puseje viska tik "bukai" nuskaitineti (tik, gal ne tiek sudetingai kaip kad tu siulai). kadangi testavausi su kruva tools'u (bandziau ssh login'a emuliuoti, top'o output'a ivairu nuskaitneti) - pernelyg nukrypau nuo temos prisegiau failiuka su demonstracija to, ka noriu pasiekti - itariu pats nmap'as ten kazka velia pats is saves :\ "Justas Butkus" <butkus.justas@gmail.com> wrote in message news:hm49pi$86g$1@trimpas.omnitel.net... > Čia, sakyčiau, toks susitarimas, kad spustelėjus Enter (ne! Tai > nelaikytina ASCII(10), tai gali būti laikoma kontrolinė komanda perduoti > valdymą) prasideda kitas apdorojimas. > Nesu tikras, shell'as, man, tai vieta, kur gyvena magija. :) > > php://stdin > <-- siūlau į tą patį $pipes[0], ar dar kur, pabandyti atsidaryti (fopen) > šitai. > Nors šiaip nežinau, ar veiks, nes širdis sako (o kodą žiūrėti tingiu), > kad fifo failų pagrindu tai gali veikti. > Iš kitos pusės, except'ionai Windows'uose, neleidžiantys turėti > aukštesnių nei 3 lygmens pipe'ų kelia abejonių... > > > Kitas variantas - rankomis daugiau pasidarbuoti. > Pvz.: posix_mkfifo leidžia tuos named pipe'us kurtis pačiam. > Tiesa, darbelio jį apdorojant ir/ar perduodant veiksmus tolesniam > procesui bus ne taip ir mažai. > > > Trečias variantas - kas tai per procesas vis tik? > Nes šitaip: > <?php > // file_name: vykdytojas.php > $pipesSpec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), > 2 => array("pipe", "r")); > > $proc = proc_open('php -f skaitytojas.php', $pipesSpec, $pipes); > > fwrite($pipes[0], 'Eilutė pirma' . PHP_EOL); > $output = fgets($pipes[1], 128); echo $output; > > fwrite($pipes[0], 'Eilutė antra' . PHP_EOL); > $output = fgets($pipes[1], 128); echo $output; > > fwrite($pipes[0], 'gana' . PHP_EOL); > $output = fgets($pipes[1], 128); echo $output; > > proc_close($proc); > ?> > <?php > // file_name: skaitytojas.php > <?php > $line = ''; > $fh = fopen('php://stdin', 'r'); > while(1) { > $line = ; > echo 'Gavau: ' . trim(fgets($fh, 128)) . PHP_EOL; > } > fclose($fh); > return 0; > ?> > > Pakvietus 'php -f vykdytojas.php' veikia bendravimas. > > > -- > JB > > 2010.02.24 11:29, flegmatoid rašė: >> na SSH'o atveju subeldus komanda ir spustelejus enter ("\n"), grazinamas >> output'as, kuri as esu linkes pamatyti. As taip pat esu linkes testi >> konmandu ivedima. >> >> Gi - pavyzdyje matyti, kad ta outputa as galiu gauti tik vienu budu - >> uzdares pipe'a i kuri tas outputas paseriamas - t.y. nupjoves saka ant >> kurios sedziu. >> >> Dar vienas klausimas prie to pacio - faktas kad procesas vis dar sukasi >> (proc_open yra elementarus fork'as) - gal kokiu nors subtiliu budu galima >> vel prisipe'inti prie jo? Tik va, $pipes[0] po uzdarymo yra NULL :\