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 04:33 | Zajímavý software

    Edison Design Group po více než 30 letech zveřejnil zdrojový kód svého EDG C/C++ front-endu. Ten proslul širokou podporou standardů C++ a kompatibilitou s dialekty kompilátorů od Microsoftu, GNU, Clangu, Sunu a dokonce i s prehistorickým cfrontem. EDG byl použit například v kompilátoru Intel C++ Classic, kompilátoru NVCC od firmy NVIDIA pro platformu CUDA nebo v našeptávači kódu IntelliSense v produktech společnosti Microsoft. Projekt nyní spravuje organizace The C++ Alliance a kód je dostupný pod licencí Apache 2.0, doplněnou o výjimky projektu LLVM.

    AfD 💙 | Komentářů: 0
    dnes 04:11 | Zajímavý projekt

    Pocket Tank je malé kapesní virtuální akvárium postavené na vývojové desce ESP32-S3-Touch-AMOLED-1.8. Na dvoujádrovém mikrokontroléru ESP32-S3 s 8 MB PSRAM a 16 MB flash paměti běží jak simulace akvária, tak i malý jazykový model určující chování rybiček. Lokální model o velikosti 7,56 MB se 14 miliony parametrů vznikl destilací modelu Gemma 4 26B, tedy učitele s 26 miliardami parametrů. Kromě firmwaru pro skutečný modul s AMOLED

    … více »
    AfD 💙 | Komentářů: 0
    dnes 03:55 | Zajímavý software

    Open-source nástroj Jevstiller vytváří (destiluje) malý lokální model, který se průběžně učí z odpovědí komerční služby Jev. Běžné dotazy vyřizuje přímo na vlastním hardware, čímž může řádově zkrátit čas odezvy a snížit provozní náklady díky menšímu využívání zpoplatněného API. Nejisté požadavky Jevstiller posílá do Jevu, rovněž průběžně kontroluje náhodná dvě procenta dotazů Jevem. Pokud se lokální model začne s Jevem rozcházet,

    … více »
    AfD 💙 | Komentářů: 0
    včera 12:00 | Pozvánky

    Konference LinuxDays 2026 proběhne již tento víkend 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Konference LinuxDays 2026 znamená desítky přednášek a workshopů, zástup zajímavých osobností, místo pro setkání, spoustu nových nápadů a informací a stánky řady různých projektů: Fedora, openSUSE, vpsFree.cz, Mozilla, MacGyver - bastlíři SH, OpenAlt a mnoho dalších. Vstup je volný.

    Ladislav Hagara | Komentářů: 4
    včera 04:33 | IT novinky

    Microsoft oznámil, že WSL kontejnery (WSLC) aneb linuxové kontejnery ve Windows Subsystem for Linux (WSL) jsou již obecně dostupné. Současně popsal jejich architekturu.

    Ladislav Hagara | Komentářů: 0
    29.9. 23:22 | Komunita

    openSUSE Leap 16.1 vstoupil do RC fáze. Nově lze instalovat jako standardní systém (Standard) nebo jako neměnný systém s atomickými aktualizacemi (Immutable). Samostatná neměnná distribuce openSUSE Leap Micro končí.

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

    Byl vydán Mozilla Firefox 157.0. S nejvýraznější vizuální proměnou za poslední roky. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 157 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 9
    29.9. 10:33 | IT novinky

    Rodina produktů Raspberry Pi se rozšířila o Raspberry Pi Smart Display Module. Deska pro Raspberry Pi Compute Module 5 se zasouvá přímo do displejů dle specifikace Intel SDM. Cena desky je 30 dolarů.

    Ladislav Hagara | Komentářů: 0
    28.9. 23:44 | Nová verze

    Byla vydána nová verze 2.56.0 distribuovaného systému správy verzí Git. Přispělo 104 vývojářů, z toho 39 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    28.9. 21:22 | Bezpečnostní upozornění

    Hackerská skupina ShinyHunters oznámila průnik do informačních systémů FBI, prostřednictvím zero-day zranitelnosti v platformě Oracle PeopleSoft, kterou úřad využívá mimo jiné pro náborový portál FBIJobs.gov. Útočníci tvrdí, že získali až 3 TB dat o současných i bývalých zaměstnancích a uchazečích o práci. Jako důkaz zveřejnili vzorek přibližně 5 000 záznamů obsahující jména, adresy, telefonní čísla, data narození, čísla

    … více »
    AfD 💙 | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2764 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: popen, pclose a C

    14.2.2008 20:21 kafi | skóre: 25 | blog: muj_prvni_blog
    popen, pclose a C
    Přečteno: 778×
    Preji pekny vecer naprogramoval jsem softik v cecku, na mem ubuntu jede bez problemu. Kdyz jsem ho nahral na server (slackware 9.1) kam ho potrebuju tak se vyskytla hlaska pri spousteni externich prikazu Broken pipe.A v tu chvili cely soft spadne a je konec. Uz jsem googlil co se dalo ale nikde jsem nic nenasel nevite nekdo kde by mohla byt chyba? prikladam dve fce ve ktereych se to deje. teda spis si myslim ze to je problem toho Slackwaru nez meho programovani. preklad provadim pomoci g++ "zdroj.cpp" -o "vystup". Hlaska se objevi po returnu z fce.
    unsigned int exec_command (const char *p_command)
    {
    	FILE *pipe_cmd=NULL;
    	
    	if ((pipe_cmd=popen(p_command,"w"))==NULL){
    		fprintf(stderr,"Don't open pipe!\n");
    		exit(1);
    	}
    	fputs(p_command, pipe_cmd);
    	pclose(pipe_cmd);
    	return 0;
    }
    
    nebo pro cteni
    unsigned int read_command (const char *p_command) 
    {
    	FILE *pipe_cmd=NULL;
    	char p_cmd[50]=("cat /var/log/syslog | grep "), vystup[2];
    
    	strcat (p_cmd, p_command);
    
    	if ((pipe=popen(p_cmd,"r"))==NULL) {
    		fprintf(stderr,"Nelze spustit externi prikaz!\n");
    		exit (1);
    	}
    	
    	if ((fgets(vystup, 2, pipe))!=NULL)  {
    		pclose (pipe);
    		return 1;
    	}
    	else {
    		pclose (pipe);
    		return 0;
    	}
    }
    

    Odpovědi

    Luboš Doležel (Doli) avatar 14.2.2008 20:30 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Ručně jde ten příkaz spustit bez problémů? Pokud jde o můj systém, tak tu žádný /var/log/syslog není.

    Nebylo by lepší nahradit veškeré spouštění podprocesů vlastním kódem?
    14.2.2008 20:37 kafi | skóre: 25 | blog: muj_prvni_blog
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Hm to v mem pripade pujde tezko spoustim i iptables a to prez cecko asi neporesim. a ja proste potrebuju cist vystup toho prikazu. a prikaz system vraci jen jestli se provedlo ci nikoliv.
    Luboš Doležel (Doli) avatar 14.2.2008 20:45 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: popen, pclose a C
    A nebude k takovým věcem lepší Bash nebo Perl?
    14.2.2008 20:48 kafi | skóre: 25 | blog: muj_prvni_blog
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Prave premyslim o nejhorsim, ze bych 600 radku poceni prepsal do perlu, jak i vi pisete, ale kur.. jak se mi nechce. takove sklamani jsem z cecka dlouho nezazil.
    15.2.2008 08:12 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Nemluvte, prosím, o zklamání z céčka. Céčko nemůže za to, že jste si nepřečetl dokumentaci.
    15.2.2008 08:05 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Chcete-li číst výstup toho příkazu, pak druhý parametr popen musí být "r", ne "w". Hláška "broken pipe" znamená, že se pokoušíte zapisovat do roury, jejíž druhý konec mezitím druhá strana zavřela. V tomto případě příkaz iptables skončí, aniž by četl to, co mu posíláte na stadardní vstup.
    14.2.2008 22:01 petris
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Existuje a ma spravna prava soubor /var/log/syslog? Jsou vsechny spoustene programy v $PATH?
    14.2.2008 22:16 qk | skóre: 15 | blog: qk_develop
    Rozbalit Rozbalit vše Re: popen, pclose a C
    No zaprvy bych rekl, ze neni tohle zrovna idealni zpusob progamovani..navic mi to prijde jako dost nesikovny.
    Chyby co vidim -
    nekontrolujes jestli se povedlo fputs.
    osobne bych taky dal aspon aserty na vstupni parametry.

    Jinak ten error ti rika, ze se pokousis cist nebo zapisovat do pipe, kterou uz nekdo na druhe strane zavrel (at uz zapisovatel nebo ctenar).
    14.2.2008 22:25 kafi | skóre: 25 | blog: muj_prvni_blog
    Rozbalit Rozbalit vše Re: popen, pclose a C
    puts nekontroluju protoze jsem to testoval. jestli jde aspon spoustet kdyz ne cist. vstupni parametry tech funkci jsou osetreny pri volani tech f-ci. takze v tele samotnych f-ci mi to prijde vcelku zbytecne. jinak dekuji za reakce. stale nehazim flintu do zita a experimentuju. prepisovat do perlu se mi to fakt nechce.
    14.2.2008 22:27 kafi | skóre: 25 | blog: muj_prvni_blog
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Jeste jsem zapomnel. jak uz jsem psal chybove hlaseni se objevi po returnu z fce. takze je zadouci aby jiz bykla roura zavrena. takze jsem z toho lehce zmateny. proc neni zavrena?
    14.2.2008 22:30 qk | skóre: 15 | blog: qk_develop
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Ale to broken pipe dle mne vyhodi to fputs nebo fgets...ne az to fclose....schvalne doporucuju pro ladeni tam dat nejake vypisy.
    14.2.2008 22:32 petris
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Co ta práva? Zkousel jste koukat do strace?
    14.2.2008 22:48 lkfjsu984
    Rozbalit Rozbalit vše Re: popen, pclose a C
    Jak uz tady qkecko rikalo, Broken pipe znamena, ze zapisujes do pipy, ktera uz je zavrena. Jde totiz o to, ze kdyz pustis ten program tak je to vicemene samostatna vec, ktera nejak komunikuje s tim tvym programem. A jde o to, jak ma ten program poznat jestli jeste ten druhy neskocil, je pripraveny cist a tak. Komunikace se dela prostrednictvim signalu a konkretne v tomhle pripade asi SIGPIPE. A ty signaly muzes bud ignorovat (jak to delas) nebo je odchytavat a pak treba kdyz ho dostanes tak proste skoncit program misto dalsiho psani do neexistujici pipy. (man 7 signal, ...). Ja to obvykle resim:
    void pipebreak(int sig)
    {
    }
    ...
    signal(SIGPIPE, pipebreak);
    
    (tohle ovsem neni priklad hodny nasledovani).

    Nicmene podle me tam je nejaka nekonzistence v tom co ty spoustene prikazy vypisuji (asi jina verze na obou pocitaich) a tak to bude asi potreba nejak osetrit.
    15.2.2008 01:06 Jirka P
    Rozbalit Rozbalit vše Re: popen, pclose a C
    (tohle ovsem neni priklad hodny nasledovani).
    Podle mně je to naprosto v pohodě (i když mnohem lepší ignorovat je pomocí signal(SIGPIPE, SIG_IGN) (pozn. default je terminate). Potom se ta chyba projeví tak že fputs selže a v errno je EPIPE (tuším).

    Každopádně na ladění takových chyb je nejlepší strace -f
    22.2.2008 10:32 kafi | skóre: 25 | blog: muj_prvni_blog
    Rozbalit Rozbalit vše Re: popen, pclose a C
    ak panove driv jsem se k tomu nedostal az ted a koul jsem se na to co stim a zjistil jsem:
    1/ spousteny command jsem skladal do pole deklarovaneho jako cmd[300]
    2/ udelal jsem z nej dynamicky aloccovane a najednou zacal fungovat i sprintf
    3/ ve vstupech do funkci jsem udelal z pointeru na command staicky command[300]
    
    a funguje.

    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.