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 21:11 | Komunita

    Guido van Rossum, tvůrce programovacího jazyka Python, oslavil 70. narozeniny. Narodil se 31. ledna 1956 v nizozemském Haarlemu.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Zajímavý software

    OpenClaw je open-source AI asistent pro vykonávaní různých úkolů, ovládaný uživatelem prostřednictvím běžných chatovacích aplikací jako jsou například WhatsApp, Telegram nebo Discord. Asistent podporuje jak různé cloudové modely, tak i lokální, nicméně doporučován je pouze proprietární model Claude Opus 4.5 od firmy Anthropic v placené variantě. GitHubová stránka projektu OpenClaw.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 03:00 | Komunita

    Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.

    Ladislav Hagara | Komentářů: 1
    31.1. 18:11 | Humor

    Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.

    NUKE GAZA! 🎆 | Komentářů: 3
    31.1. 18:00 | Humor

    scx_horoscope je „vědecky pochybný, kosmicky vtipný“ plně funkční plánovač CPU založený na sched_ext. Počítá s polohami Slunce a planet, fázemi měsíce a znameními zvěrokruhu. Upozornil na něj PC Gamer.

    |🇵🇸 | Komentářů: 4
    30.1. 18:22 | Komunita

    O víkendu probíhá v Bruselu konference FOSDEM 2026 (Free and Open source Software Developers’ European Meeting). Program konference je velice nabitý: 37 místností, 71 tracků, 1184 přednášejících, 1069 přednášek, prezentací a workshopů. Sledovat je lze i online. K dispozici budou jejich videozáznamy. Aktuální dění lze sledovat na sociálních sítích.

    Ladislav Hagara | Komentářů: 4
    30.1. 18:00 | IT novinky

    Společnost Nex Computer stojící za "notebooky bez procesorů a pamětí" NexDock představila telefon NexPhone, který může funguje jako desktop PC, stačí k němu připojit monitor, klávesnici a myš nebo NexDock. Telefon by měl být k dispozici ve třetím čtvrtletí letošního roku. Jeho cena by měla být 549 dolarů. Předobjednat jej lze s vratní zálohou 199 dolarů. V dual-bootu by měl být předinstalovaný Android s Linuxem (Debian) jako aplikací a Windows 11.

    Ladislav Hagara | Komentářů: 3
    30.1. 16:00 | Nová verze

    Byla vydána nová major verze 9.0 softwaru pro správu elektronických knih Calibre (Wikipedie). Přehled novinek v poznámkách k vydání. Vypíchnuta je podpora AI.

    Ladislav Hagara | Komentářů: 3
    30.1. 14:22 | Nová verze

    Wasmer byl vydán ve verzi 7.0. Jedná se o běhové prostředí pro programy ve WebAssembly. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    30.1. 12:22 | Zajímavý software

    V reakci na nepopulární plán Microsoftu ještě více ve Windows prohloubit integraci umělé inteligence Copilot, Opera na sociální síti 𝕏 oznámila, že připravuje nativní linuxovou verzi prohlížeče Opera GX. Jedná se o internetový prohlížeč zaměřený pro hráče, přičemž obsahuje všechny základní funkce běžného prohlížeče Opera. Kromě integrace sociálních sítí prohlížeč například disponuje 'omezovačem', který umožňuje uživatelům omezit využití sítě, procesoru a paměti prohlížečem, aby se tak šetřily systémové zdroje pro jinou aktivitu.

    NUKE GAZA! 🎆 | Komentářů: 8
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (24%)
     (3%)
     (5%)
     (2%)
     (11%)
     (31%)
    Celkem 719 hlasů
     Komentářů: 22, poslední 29.1. 23:06
    Rozcestník

    Dotaz: C - procházení souborů

    15.7.2021 07:45 PA
    C - procházení souborů
    Přečteno: 896×
    Ahoj,

    reším problém, jak v C jednoduše vylistovat a získat názvy soubodů v adresáři a podadresářích.

    Díky za rady.

    PA

    Řešení dotazu:


    Odpovědi

    15.7.2021 08:36 X
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Řešení 1× (Andrej)
    15.7.2021 09:01 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Podla C standardu je to opendir(), readdir() a closedir().
    debian.plus@protonmail.com
    15.7.2021 18:56 10minuteman
    Rozbalit Rozbalit vše Re: C - procházení souborů
    To není C standard, to je POSIX standard.

    Pokud má OP POSIX, tak OK, jinak může zkusit něco jako TinyDir.
    15.7.2021 19:56 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Máš pravdu, POSIX.
    debian.plus@protonmail.com
    15.7.2021 19:58 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C - procházení souborů
    A použi rekurziu.
    debian.plus@protonmail.com
    18.7.2021 18:54 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Pokud nebude mít velké stack framy té funkce, která prochází. Vzhledem k tomu, že tazatel nespecifikuje hloubku adresářového stromu, by mu to mohlo padat na přetečení zásobníku. „Univerzálnější“ je prohledávat FS do hloubky bez rekurze: dokud zásobník Z (datová struktura na haldě) cest k adresářům není prázdný, opakuj: vezmi ze Z prvek (cestu k adresáři), vypiš všechny soubory v ní a přidej všechny cesty k podadresářům na Z.

    (Tuším tady úkol.)
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    18.7.2021 23:32 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Rekurze bývá implementována zásobníkem. Není tedy důvod k nepoužívání rekurze.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    19.7.2021 18:27 10minuteman
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Zásobník je omezený shora, zatímco hloubka podobné iterace bývá nedeterminovaná/telná, takže to může přetéct. Z toho důvodu se například v C++ nedoporučuje binární strom implementovaný pomocí unique_ptr mazat tak, že smažu kořen.
    19.7.2021 18:32 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: C - procházení souborů
    O jaké hloubce se tady bavíme? Jednotky, tisíce nebo milióny zanoření podadresářů?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    19.7.2021 22:31 10minuteman
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Záleží na velikosti stack framu.

    Většinou je to samozřejmě jedno, ale je fajn mít to na paměti.
    1.8.2021 13:59 rotator
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Hmm, to s tím uvolňováním stromu C++ by mě nenapadlo a říkám si, že kdybych na to někdy narazil, tak se to bude obtížně ladit... díky za radu!
    19.7.2021 11:12 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C - procházení souborů
    No, je dalsia moznost. A to pouzit inline rekurziu. Lahko citatelny kod pre pouzivatela a optimalizovany kod pre hardver, s minimimom ukladanych dat. ;)

    Ved rekurziu si napis tak, ze pomocne data budu pouzivat haldu a nie stack.

    Pripadne cez goto.

    V Linuxe nie je problem zo stackom pri Intel/AMD pouzitom ako bezne PC, lebo ak je maly stack, da sa prealakovat a bude vacsi.
    debian.plus@protonmail.com
    21.7.2021 09:05 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C - procházení souborů
    V Linuxe nie je problem zo stackom pri Intel/AMD pouzitom ako bezne PC, lebo ak je maly stack, da sa prealakovat a bude vacsi. V Linuxe nie je problem zo stackom pri Intel/AMD pouzitom ako bezne PC, lebo ak je maly stack, da sa prealakovat a bude vacsi.
    Toto nie je pravda. Da sa iba zmenit velkost pred spustenim (pripadne bez limitu).
    debian.plus@protonmail.com
    24.7.2021 09:47 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: C - procházení souborů
    To není možné si zaalokovat paměť a tam nastavit esp/rsp a ebp/rbp? Nikdy jsem to nezkoušel, ale myslím si, že by to mělo fungovat.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    24.7.2021 10:20 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: C - procházení souborů
    Tak jsem to zkusil. Zde je kód pro x86_64:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define CHARS 1024
    
    long int
    move_stack(void *stack_bot, void (*jmp_addr)(void));
    
    void
    function_in_new_stack(void)
    {
    	long int foo;
    	char string[CHARS];
    
    	for (char *ch = string + CHARS; ch >= string; ch--) {
    		*ch = 'A';
    	}
    
    	puts(string);
    
    	printf("Cur. stack ptr: 0x%lx\n", (size_t) &foo);
    }
    
    int
    main(int argc, char **argv)
    {
    	long int foo;
    	void *stack, *stack_bot;
    
    	printf("Cur. stack ptr: 0x%lx\n", (size_t) &foo);
    
    	stack = malloc(4096);
    	stack_bot = stack + 4096;
    
    	printf("New stack addr.: 0x%lx\n", (size_t) stack);
    	printf("New stack bottom: 0x%lx\n", (size_t) stack_bot);
    
    	puts("Moving to the new stack.");
    
    	foo = move_stack(stack_bot, &function_in_new_stack);
    
    	printf("Function worked: 0x%lx %c\n", foo, foo);
    	printf("Cur. stack ptr: 0x%lx\n", (size_t) &foo);
    
    	puts("Freeing the stack.");
    	free(stack);
    }
    .globl move_stack
    move_stack:
    	/* Tyto registry zachováváme. */
    	pushq %rbx
    	pushq %r12
    	pushq %r13
    	pushq %r14
    	pushq %r15
    
    	/* V %rdi je spodek nového stacku, v %rsi funkce k zavolání. */
    
    	/* Poznamenáme si starou adresu stacku. */
    	mov %rsp, %rbx
    
    	/* Přejdeme do nového stacku. */
    	movq %rdi, %rsp
    
    	/* Adresu uložíme na nový stack. */
    	pushq %rbx
    
    	call %rsi
    
    	/* Vrátíme se zpět. */
    	popq %rsp
    
    	/* Uklidíme po sobě. */
    	popq %r15
    	popq %r14
    	popq %r13
    	popq %r12
    	popq %rbx
    
    	/* Vrátíme 'Y' jako návratovou hodnotu. */
    	movq $0x59, %rax
    
    	ret
    
    Funkce move_stack zavolá funkci s daným stackem. Funguje to – viz výstup. Pokud nastavím CHARS na příliš velkou hodnotu (nový stack má 4k), spadne to na SIGSEGV, takže se používá nový stack.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    NUKE GAZA! 🎆 avatar 21.7.2021 12:12 NUKE GAZA! 🎆 | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: C - procházení souborů

    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.