Portál AbcLinuxu, 12. května 2025 07:07
wc -lJe nyni standardni vstup tohoto prikazu nejak v systemu identifikovan? Jde mi o, ze nyni potrebuju z jineho okna konzole z jineho programu (sveho napsaneho v C) poslat bezici aplikaci (zde wc -l) nejaka data. Je toto mozne?
echo "data" > /proc/PID_PROGRAMU/fd/0
mkfifo
. Příkazu wc -l
řeknete, že má číst z dané pojmenované roury, a jiným programem pak do ní můžete zapisovat.
wc -l
musí počkat na ukončení vstupu, protože počítá počet řádek v celém vstupu. Jediná možnost je spustit wc -l
pro každý vstup znova.
wc
ji dělá určitě, je to jeho jediný účel, john
ji dělá dost pravděpodobně - tak může přejít do další fáze až po té analýze. Takže wc
něco vcelku logicky vypíše, až dostane ten vstup celý a ví, kolik je řádků, ale ty řádky počítá průběžně, jakmile se mu naplní vstupní buffer. To lze snadno ověřit (trasováním, nebo i jen v topu). Některým programům lze říci, aby zpracovávaly vstup po řádcích, nevím, zda tak lze nastavit jonh
, nejspíš by to mělo negativní vliv na efektivitu.
wc -l prvni radek druhy radek treti radek [stisk CTRL+D] 3Ja bych ho vsak potreboval prinutit fungovat takto:
wc -l prvni radek 1 druhy radek 2 treti radek 3 ...Tedy zpracovavat zvlast kazdy radek vstupu. Vyresit to ale nejak obecne (ne jen nejakym parametrem pokud existuje) abych to same mohl aplikovat i na john. Pro uplnost jeste dodam, ze john na toto zadny option nema.
pipe
), udělat fork
, v dítěti čtecí stranu roury namapovat na stdin (funkcí dup2
), pomocí execve
spustit požadovanou aplikaci a v rodiči do zapisovací strany roury posílat slova. Přesně tak, jak to dělá shell.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.