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í
×
    dnes 15:44 | Bezpečnostní upozornění

    Dle Phoronixu zveřejnila společnost Trend Micro prostřednictvím programu Zero Day Initiative (ZDI) několik hlášení bezpečnostních zranitelností přímo na veřejném mailing listu LKML, přestože některé chyby dosud nemají opravu začleněnou do hlavní větve jádra. Mezi hlášenými problémy jsou dvě zranitelnosti s hodnocením CVSS 9.0, týkající se SMB Direct a KSMBD, které mohou umožnit vzdálené spuštění kódu. Další hlášení se týkají … více »

    vencour | Komentářů: 0
    dnes 15:33 | Nová verze

    Správce hesel KeePassXC byl vydán ve verzi 2.8.0. Přechází na Qt 6, podporuje vkládání hesel s Waylandem, rychlé odemykání pomocí Polkitu nebo možnost nastavení klávesových zkratek (seznam změn).

    ʚĭɞ 🍉 | Komentářů: 0
    dnes 15:22 | Nová verze

    Databáze DuckDB (Wikipedie) byla vydána ve verzi 2.0.0 LTS. S kódovým názvem Cinnamon Teal (čírka skořicová). S vyladěným protokolem Quack.

    Ladislav Hagara | Komentářů: 0
    dnes 11:11 | Bezpečnostní upozornění

    V implementaci Broadcom 802.11 byla zjištěna chyba ve zpracování WPS/EAP, týká se to SDK od roku 2010. Broadcom podle výzkumníka Quentina Kaisera odmítl CVE přidělit. Modemy Huawei a Technicolor jsou používány i v ČR, v LTE routerech, běžných domácích routerech a firemních přístupových bodech, jejich současný počet a zranitelnost konkrétních verzí však zatím neznáme. Více detailů a demo. GitHub / Broadcom 802.11 SDK Detection Toolkit.

    vencour | Komentářů: 0
    dnes 05:11 | Nová verze

    Byla vydána nová verze 10.8 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přibyl balíček DietPi WireGuard.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Pozvánky

    Oslavte vydání openSUSE Leap 16.1 s námi v Praze! Ve středu 4. listopadu 2026 (den po vydání Leapu 16.1) vás zveme na malou oslavu vydání openSUSE Leap 16.1 do pražské kanceláře SUSE. Připravili jsme pro vás dvě krátké přednášky: … více »

    lkocman | Komentářů: 1
    včera 16:44 | Bezpečnostní upozornění

    Dle plánu bylo PHP vydáno v nových verzích 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Opraveny jsou kritické zranitelnosti CVE-2026-109618 a CVE-2026-109619 aneb PHP2Shell.

    Ladislav Hagara | Komentářů: 10
    včera 11:55 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-2.1 a 24.04-1.5. S opravou kritických zranitelností.

    Ladislav Hagara | Komentářů: 0
    včera 11:33 | IT novinky

    Společnost Škoda Auto zveřejnila na Printables bezplatné 3D modely příslušenství do svých vozů (držáky na nápoje, pomůcky pro vedení kabelů, mincovníky, háčky na USB kabely a čepice pro kapsy na zadních stranách opěradel sedadel, držáky na telefony a úchyty pro horní upevnění bezpečnostních pásů).

    Ladislav Hagara | Komentářů: 9
    včera 05:11 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 170 (pdf).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2892 hlasů
     Komentářů: 33, poslední 20.10. 23:44
    Rozcestník

    Dotaz: Implementace roury v C

    17.7.2013 09:04 k-barter_CZ | skóre: 2 | Zlín
    Implementace roury v C
    Přečteno: 867×
    Zdravím,

    napsal jsem si program, který je schopen číst argumenty přes příkaz řádku a umí rozpoznat, zda je vstup soubor či uzávorkovaný text.

    Nyní jsem ve fázi, kdy bych chtěl naimplementovat pajpu ( | ). Googloval jsem asi 3 dny a tady je link, kde bych se mohl chytit:

    http://snap.nlc.dcccd.edu/learn/fuller3/chap11/chap11.html

    na ABC jsem taky něco našel, konkrétně http://www.abclinuxu.cz/poradna/programovani/show/373050

    Našel jsem toho vícero, ale některé workaroundy mi přišly komplikované..

    Potíž je v tom, že jako amatérský programátor o implementaci roury nic nevím, nicmnéně vím, jak roura funguje v systému (stdout programu A -> stdin programu B). Zkoušel jsem to na svém programu, nicméně můj program se chová, jako by žádný argument na příkazové řádce nedostal.

    Jak už jsem řekl, program je ve stádiu kdy dokáže přijmout soubor (otevře a přečtě), nebo uzávorkovaný text a výsledek hodí na terminál, pokud nepřesměruji do souboru, nebo rourou do jiného programu (což funguje). V tomto případě mi jde o přímý vstup textu, pokud to nepůjde, nic se neděje, jen budu muset dělat soubory, což je záležitost jednoho > , potažmo >> .

    Na závěr dodám, že se řídím standardními int main(int argc a char* argv[]), poté z argv kopiruje do pole a potom podle toho buď čte přímo, nebo otevře soubor.


    Řešení dotazu:


    Odpovědi

    17.7.2013 09:40 potato
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Asi nerozumím otázce, ale programy normálně neimplementují rouru (dokonce ani nevědí, že se v rouře nacházejí). Je to konstrukce shellu, takže shell programům v rouře nastaví stdin/stdout, aby si vstupy a výstupy pěkně předávaly.

    Tedy implementovat rouru znamená, že chceš udělat totěž co dělá shell: spustit dva jiné procesy a nastavit jim stdin a stdout tak, aby výstup jednoho šel na vstup druhého. Tohle je v těch odkazovaných příkladech ukázáno a moc jednodušeji se to udělat nedá.

    Pokud chceš dělat něco jiného (nevidím tu totiž ani slovo o spouštění dalších procesů), tak zkus víc popsat, o co se vlastně snažíš.
    17.7.2013 10:31 Zadejte vaše jméno
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Jak si napsal, | posila data do stdin, ne do argv, musis teda cist z tama... A nebo pouzivat neco jako echo file |xargs tvujprogram
    17.7.2013 13:09 k-barter_CZ | skóre: 2 | Zlín
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Zdravím,

    Ano, chci aby můj program bral obsah roury, napr echo "text" | program , pričemž program se tváří, že na vstupu jako argument nic nedostal, ale když zadám program "soubor nebo text", tak už se něco děje.

    Nicméně qrencode, CL utilita na generaci QR kódů, to vezme bez jakýkoliv potíží. Nicméně qrencode je v jiném jazyku, můj program je čisté C.

    Nicméně děkuji za Vaše tipy, zkusím si odkazy projít ještě jednou. Abych byl upřímný, mě ty postupy přijdou pro mě osobně "psycho". Možná jsem jen něco špatně pochopil nebo mám špatnou představivost.
    17.7.2013 13:19 R
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Nechapes zaklady. Citaj zo standardneho vstupu (stdin)!
    18.7.2013 00:09 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Chyba je v představě, že když napíšete "aaa | bbb", tak příkaz aaa dostane svislou čáru jako parametr. Tu ale ve skutečnosti interpretuje už shell a program má rovnou rouru otevřenou pro zápis jako deskriptor 1, tj. standardní výstup. Druhý program má pak tutéž rouru otevřenou pro čtení coby deskriptor 0, tj. standardní vstup. Programy samotné pak skutečnost, že jsou spuštěny přes rouru, vůbec nezajímá a chovají se stejně, jako kdybyste je spustil samostatně (až na výjimky, např. některé programy mají mírně odlišný výstup podle toho, jestli je výstupem terminál nebo ne).
    stativ avatar 17.7.2013 14:28 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: Implementace roury v C
    Jak už ostatní psali, pro vstup z roury se použije čtení ze stdin. Ve vašem případě (pokud to dobře chápu) chcete dosáhnout toho, že program bude moct číst argumenty z roury, nebo z argumentů příkazového řádku.

    Na to je potřeba rozlišit, jestli má terminál, nebo ne. Na to je funkce isatty(). Pokud terminál má, argumenty budete číst z (char **argv) (tj. parametru main), pokud ne, vstup je z roury a je potřeba číst ze stdin.

    V praxi by to vypadalo zhruba následovně (kód není funkční, je to jen ukázka):
    char* argument;
    
    if (isatty(STDIN_FILENO)) {
      argument = argv[1];
    } else {
      argument = // read_from_stdin
    }
    
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

    Založit nové vlákno • Nahoru

    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.