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 05:55 | Nová verze

    Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).

    Ladislav Hagara | Komentářů: 5
    dnes 05:11 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).

    Ladislav Hagara | Komentářů: 0
    dnes 01:55 | Nová verze

    Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    včera 19:33 | Nová verze

    Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | IT novinky

    Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).

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

    Samsung představil svůj nejnovější chytrý telefon Galaxy Z TriFold (YouTube). Skládačka se nerozkládá jednou, ale hned dvakrát, a nabízí displej s úhlopříčkou 10 palců. V České republice nebude tento model dostupný.

    Ladislav Hagara | Komentářů: 3
    včera 12:33 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.11.1. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 1
    včera 04:00 | Nová verze

    Byla vydána nová verze 15.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 7
    včera 03:00 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04 1.1 a 20.04 OTA-11. Vedle oprav chyb a drobných vylepšení je řešen také středně závažný bezpečnostní problém.

    Ladislav Hagara | Komentářů: 0
    včera 00:33 | IT novinky Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (34%)
     (47%)
     (19%)
     (18%)
     (23%)
     (15%)
     (25%)
     (16%)
     (18%)
    Celkem 426 hlasů
     Komentářů: 18, poslední včera 18:34
    Rozcestník

    Dotaz: Jak zrušit pipe mód přest system() v Perlu

    19.4.2017 12:17 RM
    Jak zrušit pipe mód přest system() v Perlu
    Přečteno: 304×
    Měl bych záludný dotaz nejen na uživatele Perlu ohledně použití roury. Co se týče roury, vycházím z těchto předpokladů: Při napojení roury na vstup se vytvoří spojení STDOUT->|->STDIN a u druhého programu se tedy nastaví filedeskriptor 0 na čtení z roury (/proc/$$/fd/0). Dovolil jsem si to nazvat jako (pipe mód). Na základě toho pak změní své chování program, protože deskriptor (tedy mód) se dědí. Takhle nějak to chápu, a jde mi o to, nějak toto dědění potlačit. Problém se dá minimalizovat do perlího one-lineru takto:
    echo "ahoj" | perl -ne 'print $_; system(vim, /tmp/file.test) '
    Potřebuji nějak pracovat se vstupem ze STDIN (zde puze print) a pak použít system(), který dědí filedeskriptor napojený na rouru a dle toho se program vim zachová tak, že očekává vstup přes STDIN, k čemuž by ale potřeboval místo zadaného souboru pomlčku; takže si zanadává a v mém případě rozbije terminál. Zkoušel jsem zavřít STDIN, ale to nepomůže, protože pipe mód (zřejmě stále platné /proc/$$/fd0) zůstane. Je nějaký způsob jak před system() nebo exec() zrušit pipe mód a program spustit normálně?

    Odpovědi

    19.4.2017 13:32 Lyco | skóre: 14 | blog: Lyco
    Rozbalit Rozbalit vše Re: Jak zrušit pipe mód přest system() v Perlu
    Připoj vimu na stdin svůj řídící terminál, viz také https://linux.die.net/man/4/tty

    ve tvém případě funguje primitivní úprava:
    echo "ahoj" | perl -ne 'print $_; system("vim /tmp/file.test </dev/tty")'
    Pokud už řídící terminál nemáš, můžeš použít expect, nebo si nastudovat jak se pracuje s pseudoterminálem.
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
    19.4.2017 18:12 RM
    Rozbalit Rozbalit vše Re: Jak zrušit pipe mód přest system() v Perlu
    Zdá se, že spouštět kvůli tomu shell není třeba. Tohle funguje také:
    echo "ahoj" | perl -ne 'print $_; open STDIN, "/dev/tty" ;system qw(vim /tmp/file.test)'
    Takže díky moc, informace pomohla.

    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.