abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 17:25 | IT novinky

Do prodeje (Farnell) se dostal jednodeskový počítač Tinker Board (unboxing). Jedná se o konkurenci Raspberry Pi 3 od společnosti Asus. Porovnání (jpg) těchto počítačů například na CNXSoft. Cena Tinker Boardu je 55 £.

Ladislav Hagara | Komentářů: 8
včera 14:44 | Zajímavý projekt

Byla zveřejněna pravidla hackerské soutěže Pwn2Own 2017, jež proběhne od 15. do 17. března v rámci bezpečnostní konference CanSecWes ve Vancouveru. Soutěžit se bude o více než milion dolarů v pěti kategoriích. Letos se bude útočit i na Ubuntu. Jedná se již o 10. ročník této soutěže.

Ladislav Hagara | Komentářů: 1
včera 13:33 | Nová verze

Po sedmi měsících vývoje od vydání verze 5.7 byla vydána verze 5.8 (YouTube) toolkitu Qt. Z novinek lze zmínit například Qt Lite pro vestavěná zařízení. Nově jsou plně podporovány moduly Qt Wayland Compositor (YouTube) a Qt SCXML (YouTube). Současně byla vydána verze 4.2.1 integrovaného vývojového prostředí (IDE) Qt Creator.

Ladislav Hagara | Komentářů: 1
včera 11:52 | Pozvánky

Lednový Prague Containers Meetup se koná ve čtvrtek 26. ledna 2017 od 18:00 v Apiary, Pernerova 49, Praha 8. Přijďte se podívat na přednášky o Enterprise Kubernetes a Jenkins as a code.

little-drunk-jesus | Komentářů: 0
včera 11:40 | Pozvánky

Program letošního ročníku konference Prague PostgreSQL Developer Days, která se koná již 15. a 16. února 2017 na ČVUT FIT, Thákurova 9, Praha 6, byl dnes zveřejněn. Najdete ho na stránkách konference včetně anotací přednášek a školení. Registrace na konferenci bude otevřena zítra (24. ledna) v brzkých odpoledních hodinách.

TomasVondra | Komentářů: 0
22.1. 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

Ladislav Hagara | Komentářů: 0
22.1. 02:02 | Komunita

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

Ladislav Hagara | Komentářů: 0
21.1. 22:11 | Nová verze

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
20.1. 17:00 | Nová verze

Byl vydán Docker 1.13. Přehled novinek na YouTube a v poznámkách k vydání na GitHubu. Docker umožňuje běh aplikací v softwarových kontejnerech (Wikipedia).

Ladislav Hagara | Komentářů: 7
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (12%)
 (2%)
 (72%)
 (3%)
 (11%)
Celkem 389 hlasů
 Komentářů: 31, poslední včera 19:19
Rozcestník
Reklama

Dotaz: Identifikace vstupu aplikace

1.5.2011 17:17 keporkak
Identifikace vstupu aplikace
Přečteno: 270×
Dobry den,

dejme tomu, ze spustim nejaky linuxovy prikaz, ktery ceka svuj vstup z konzole, napr:
wc -l
Je 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?

Odpovědi

1.5.2011 17:28 maertien | skóre: 29 | blog: martinek
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Zkusil bych toto:
echo "data" > /proc/PID_PROGRAMU/fd/0
1.5.2011 17:46 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
K tomu slouží pojmenované roury – podívejte se např. na příkaz mkfifo. Příkazu wc -l řeknete, že má číst z dané pojmenované roury, a jiným programem pak do ní můžete zapisovat.
1.5.2011 18:14 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Dekuji, za odpovedi, obe moznosti by asi sly, ale trochu konkretizuji svuj problem.

Jde mi o to spustit program john (http://www.openwall.com/john/) ve vice instancich (napriklad dva, tak aby kazdy bezel na jednom procesoru), tak aby prijimal slova, ze kterych dela hashe ze std. vstupu, tedy s parametrem --stdin.

Ja bych si potom naprogramoval jednoduchou aplikaci v C, ktera by slova ze slovniku nastridacku zasilala obema instancim a ty tedy zaroven zpracovavaly slova.

Problem je ten, ze pokud aplikaci (at uz vyse zminene wc -l nebo john) poslu na std. vstup retezce, aplikace svoji cinnost nevykona dokud nedojde ke stisknu CTRL+D. Az pak se aplikace "probere", zpracuje svuj buffer a ukonci se. A ja prave nechci aby se ukoncila, potrebuji, aby retezce zpracovala prubezne.

Doufam, ze jsem alespon trochu srozumitelne vysvetlil, o co se snazim. Jde toto nejakym zpusobem vyresit?
2.5.2011 15:56 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
To záleží na způsobu práce aplikace. 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.
2.5.2011 15:59 me vakérav
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Tak jak píšeš by to mělo fungovat. Problém asi bude v tom, že když to zkoušíš na malých datech, zůstanou viset v nějakém cache bufferu, dokud se nezaplní nebo se roura neukončí. Na malých datech se buffer samozřejmě nezaplní a při skončení roury skončí i program.

Zkus to na větších datech a prostě tam ta data rvi. Je jasné, že johni budou trochu zpožděni oproti tomu, co tam posíláš, ale to je správně - to je prostě cache, která je nutná jednak kvůli efektivitě a jednak kvůli lepší paralelizaci (každý má svojí rezervu nezávislou na předchozím a dalším programu v rouře).
3.5.2011 12:30 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Zkousel jsem tam do nej takto vysypat asi 14MB slov (kazde na radku), ale chova se to stale stejne, porad visi v konzoli a ceka na stisk CTRL+D. Nemuzu to cachovani nejakym zpusobem potlacit? Pripadne po nejakych intervalech vynutit zpracovani teto cache?
3.5.2011 17:49 l4m4
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Pokud dělá program jakoukoli celkovou analýzu vstupu - 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.
3.5.2011 21:12 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Ted jsem jeste zkousel john, ale podle me se chova stejne jako wc, tedy ze cely vstup bufferuje a vypocet provede az po stisku CTRL+D.

Celou situaci tedy muzu ukazat pouze na wc:

Standardne se chova takto:
wc -l
prvni radek
druhy radek
treti radek
[stisk CTRL+D]
3
Ja 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.
3.5.2011 22:17 l4m4
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Takže ještě jednou:

* wc nebufferuje celý vstup.

* bufferovat celý vstup není totéž co přečíst celý vstup (wc dělá jen to druhé).

* obecně to vyřešit nejde, protože program může potřebovat přečíst celý vstup.

Pokud zpracování jednoho řádku trvá programu tak dlouho a zároveň nechceš využít toho, že program může pracovat efektivněji po načtení celého vstupu, tak spouštěj program na každý řádek zvlášť, to je jedná obecná možnost.
2.5.2011 15:42 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Jde toto nejakym zpusobem zrealizovat?
3.5.2011 12:42 Sten
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
A proč tu aplikaci chcete spouštět někde stranou a potom jí lézt do standardního vstupu? Nejjednodušší řešení je vytvořit rouru (funkcí 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.
3.5.2011 15:42 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
To zni velice zajimave, bohuzel nejsem prilis sbehly v jazyce C. Byl by prosim nekdo tak hodny a hodil sem nejakou kostru/priklad, jak to konkretneji udelat?
3.5.2011 17:51 l4m4
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Z toho, co napsal Sten, je nejdůležitejší to ,přesně tak, jak to dělá shell`. Bude to se to chovat úplně stejně.
3.5.2011 20:57 keporkak
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Ehm, to nejak nechapu, budu tedy programovat v C vyuzitim funkci, co psal Sten nebo mam nejak pouzit shell (bash)?
3.5.2011 22:18 l4m4
Rozbalit Rozbalit vše Re: Identifikace vstupu aplikace
Je to úplně jedno, chování bude stejné.

Klidně to sem napíšu i potřetí...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.