Re: Re: Jak poslat programu textovou zprávu na standardni vstup stdin?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Říjen 29 18:23:22 CET 2006


On 26 Oct 2006, Jakub Zverina wrote:

> Zkousel jsem asi toto:
> "konzole 1":
>     cat|sed "s/a/b/"
> "konzole 2":
>     zjistit pid toho sedu
>     echo a > /proc/2682/fd/0
> 
> a na "konzoli 1" se objevi "b", tzn. sed to dostal na stdin, kde to
> ocekaval, a zpracoval. Zajimave, ze bez toho `cat|` mi to nejak neslo

To "cat|" způsobilo, že na vstupu sed-u byla roura. A platí, že jak se do
roury volá, tak se z roury ozývá. Poněkud překvapivé na tom je, že jste
vlastně jakoby zapisoval do čtecího konce roury, ale zdá se, že linuxové
jádro s tím až takové štráchy nedělá (nahlédnutím do fs/pipe.c lze
zjistit, že pod rourou je schovaný syntetický inode, který je sám o 
sobě takový hermafroditní  a dají se přes něj otevřít oba konce roury bez 
ohledu na to, přes jaký konec jsme se k tomu inodu dostali).

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux