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

Jakub Zverina barbucha na gmail.com
Čtvrtek Říjen 26 22:14:06 CEST 2006


On Oct 16, 10:33 am, "condor" <con... na email.cz> wrote:
> Ahoj, potreboval bych poslat programu na standardní vstup stdin
> retezec. Mám konzolovou aplikaci, kde do konzoly píši príkazy a
> potrebuji príkaz poslat ze vzdáleného pocítace.
> V knize "Pokrocilé programování v operacním systému Linux"
> (www.advancedlinuxprogramming.com) jsem se docetl (7.2.5), že mohu
> procesum poslat zprávu na stdout pres file descriptor procesu
> následujícím zpusobem:
>
> echo "zprava" >> /proc/CisloProcesu/fd/1
>
> s tím, že 0 je stdin, 1 je stdout a 2 je stderr.
>
> Zkusil jsem tedy poslat procesu zprávu na /proc/CisloProcesu/fd/0.
> Zpráva se vypsala na konzolu, ale na stdin neprišla. Vycítání ze
> stdin jsem skoušel následujícími spusoby:
>
> fgets (linebuf, 1000, stdin);
> i
> std::cin >> linebuf;
>
> Oboje se stejným výsledkem. Zkusil jsem tímto zpusobem poslat
> príkaz "cd .." shellu bash i xterm-u. Se stejným výsledkem.
> Príkaz se vypsal na konzolu, ale nepokusil se provést ani
> neodrádkoval.
>
> Nemáte s tím nekdo zkušenost? Moc by mi to pomohlo.
> Díky.
>
> condor

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
:)



Daląí informace o konferenci Linux