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:00 | IT novinky

    Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Nová verze

    Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.

    Ladislav Hagara | Komentářů: 15
    včera 02:00 | Zajímavý článek

    Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.

    … více »
    Ladislav Hagara | Komentářů: 3
    16.2. 22:55 | Nová verze

    Byla vydána verze 0.5.20 open source správce počítačových her na Linuxu Lutris (Wikipedie). Přehled novinek v oznámení na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    16.2. 12:44 | IT novinky

    Peter Steinberger, autor open source AI asistenta OpenClaw, nastupuje do OpenAI. OpenClaw bude převeden pod nadaci a zůstane otevřený a nezávislý.

    Ladislav Hagara | Komentářů: 0
    16.2. 03:11 | Zajímavý článek

    Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2025. Ke konci roku 2025 vlastnila 349 462 pevných disků. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, byla 1,36 %. V roce 2024 to bylo 1,57 %. V roce 2023 to bylo 1,70 %. V roce 2022 to bylo 1,37 %.

    Ladislav Hagara | Komentářů: 13
    15.2. 21:55 | Zajímavý software

    Nástroj sql-tap je proxy mezi aplikací a databází, které zachytává všechny SQL dotazy a zobrazuje je v terminálovém rozhraní. Zde lze téměř v reálném čase zkoumat dotazy, sledovat transakce a spouštět SQL příkaz EXPLAIN. Podporované databázové systémy jsou pouze PostgreSQL a MySQL. Zdrojový kód je dostupný na GitHubu, pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    15.2. 13:55 | Nová verze

    Byla vydána nová verze 9.2 textového editoru Vim (Vi IMproved). Přináší vylepšené doplňování, podporu schránky ve Waylandu, podporu XDG Base Directory (konfigurace v $HOME/.config/vim), vylepšené Vim9 skriptování nebo lepší zvýrazňování změn. Vim zůstává charityware. Nadále vybízí k podpoře dětí v Ugandě. Z důvodu úmrtí autora Vimu Brama Moolenaara a ukončení činnosti jím založené charitativní organizace ICCF Holland projekt Vim navázal spolupráci s charitativní organizaci Kuwasha.

    Ladislav Hagara | Komentářů: 4
    14.2. 12:33 | Zajímavý projekt

    Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.

    NUKE GAZA! 🎆 | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (27%)
    Celkem 891 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: fork()

    26.2.2008 12:46 pepa
    fork()
    Přečteno: 603×
    DD,

    mam nasledujici kod
    int main(void){
      pid_t id;
      printf("tento text se vypíše dvakrát");
      if ((id = fork()) == 0) { /* synovský proces */
        putchar('\n');
      } else
        if (id > 0) { /* otcovský proces */
      putchar('\n');
      } else {
       perror("fork"); return 1; /* chyba při fork() */
      }
      return 0;
    }
    
    chtel bych vedet, jaktoze se funkce printf provede 2x? moje myslenka je, ze po vytvoreni procesu jak parent tak child pokracuji dale v programu.

    Odpovědi

    26.2.2008 12:50 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: fork()
    Ne. V procesu potomka se provádí až to, co následuje za návratem z fork().
    26.2.2008 18:51 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: fork()
    Omlouvám se. Moje odpověď je sice správná, ale na jinou otázku. Nevšiml jsem se, že se neptáte, jestli se ta funkce volá dvakrát, ale proč se zdá, jako by se volala dvakrát.
    26.2.2008 13:48 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: fork()
    Tak tohle je dost dobrej vtip :-) (ne jako že si děláš srandu, ale že je to zajímavý chování)

    Standardní výstup je jako normální soubor. Zapisuje se do něj pomocí volání syscallu kernelu. To je ovšem drahý, takže se to, co se má vypsat, nejdřív cachuje do paměti a až potom se to najednou vypíše. Funce libc, které pracují s FILE*, prostě nejdřív cachují do paměti a až když tam pošleš znak konce řádku, tak se to odpálí syscallem do kernelu. (Proto taky ty funkce pracují se strukturou FILE a ne rovnou s číselným deskriptorem.)

    Takže co se stane - do té cache uložíš ten text, ale ten se ve skutečnosti nikam nevypíše. Pak rozmnožíš ten proces, takže teď každý proces má svou vlastní verzi cache s tím textem. A v obou procesech ji celou odpálíš tím znakem '\n'.

    Je to evidentní z výpisu programu strace -f.
    26.2.2008 13:51 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: fork()
    Řešení: za printf vložit fflush(stdout); nebo dát do printf znak konce řádku (\n).
    26.2.2008 19:10 kvido
    Rozbalit Rozbalit vše Re: fork()
    Ono je to evidentní spíš z manuálové stránky, kterou bych rozhodně každému doporučil k prostudování, než se do forkování pustí. Je to méně bolestné, než podrobnosti zjišťovat "za běhu", což říkám z vlastní zkušenosti.
    27.2.2008 07:14 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: fork()
    man stdout? Číst zrovna tuhle manuálovou stránku by mě na jeho místě asi taky nenapadlo. I když úplně nejlepší je si přečíst všechny manuálový stránky :-)
    27.2.2008 08:44 kvido
    Rozbalit Rozbalit vše Re: fork()
    Překvapivě man fork :-). Stejné chování může nastat pro libovolný soubor, nejde o žádnou specialitu stdout.
    27.2.2008 10:33 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: fork()
    V mé debianní man fork toho moc není. Že při forku se používá copy-on-write se tam píše, ale že se data před zápisem souboru cachují, že té cow metodě podléhá i ta cache a že to může dělat takové chyby se tam nepíše, což je myslím si přesně ta informace, kterou tazatel potřeboval vědět. I to, že zděděné filedeskriptory sdílejí informaci o pozici v souboru se v manuálových stránkách píše taky bůhví kde. Když chci programovat pro Linux, tak prostě nestačí tipnout si název příkazu a přečíst si jen jeho man stránku, bohužel.
    27.2.2008 10:39 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: fork()
    (Samozřejmě je blbost, aby se man fork zabývala všemi detaily I/O a ostatních subsystémů jenom proto, že se to dá forknout. Jenom chci prostě říct, že to v man fork není :-) A poslední větu nemyslím nijak útočně a ani proti někomu.)
    27.2.2008 11:09 kvido
    Rozbalit Rozbalit vše Re: fork()
    Pokud chci interpretovat informaci o kopírování file deskriptorů, musím vědět, co to je file deskriptor a jak se používá, jinak má taková informace samozřejmě zanedbatelnou hodnotu. Takže jitě, jen manuálová stránka fork nestačí, pokud neznám vše, co se v ní odkazuje.

    Já jsem původně hlavně reagoval na to, že mechanismus "dvojitého výpisu" je patrný ze strace, což může vyvolávat dojem (můj dojem, neříkám, že to někdo tvrdí), jako by bylo vhodné nebo nutné to tímto způsobem zkoumat a dělat na základě toho nějaké závěry. Co tvrdím já je, že jde o chování zcela odpovídající standardu (POSIX), které je na většině systémů předvídatelné, byť se na něj nedá spoléhat (např. protože standard použití vyrovnávací paměti nevynucuje). V tomto kontextu je uváděné tvrzení, že pomůže fflush nebo vypsání nového řádku před forkem, nesprávné, neboť odpovídá pouze pozorování na konkrétním systému. Může existovat jiný systém, kde vypsání nového řádku zmíněný efekt nemá (pro fflush to je normou vyžadováno).
    27.2.2008 11:17 petris
    Rozbalit Rozbalit vše Re: fork()
    Mel by to spis vedet z hlavy protoze printf je standardni funkce C a chovani streamu se popisuje snad v kazde ucebnici C.
    27.2.2008 09:14 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: fork()
    Teď nemám kde to zkusit, ale může se něco podobného stát na úrovni cache "uvnitř jádra" (např. při použití TCP_CORK)?
    27.2.2008 09:32 kvido
    Rozbalit Rozbalit vše Re: fork()
    Netuším co je TCP_CORK "uvnitř jádra", nicméně si troufnu odpovědět. Nejde o žádnou magii, ale chování vyplývající z toho, že fork kopíruje (mimo jiné) file deskriptory rodiče do potomka. Toto je popsáno a je třeba to vědět a ošetřit podle toho, co přesně je požadováno. Časté je, že před voláním fork se volá flush (aby později nedošlo ke zde zmíněnému dvojitému vypsání obsahu vrovnávací paměti) a první akce, kterou potomek provede, je zavření zděděných deskriptorů. Zpět k dotazu - pokud je to správně naprogramované, žádný dvojitý výpis apod. nehrozí. Předpokládejme, že v jádře je to správně naprogramované.
    27.2.2008 12:23 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: fork()
    Mám dojem, že si pletete FILE z libc a file descriptor procesu z jadra.

    Situace před forkem:
    PID User space              | Kernel space
    1   FILE *stream1 → int fd1 --→ int kfd1
    
    Situace po forku:
    PID User space              | Kernel space
    1   FILE *stream1 → int fd1 -+→ int kfd1
    2   FILE *stream1 → int fd1 -+ 
    
    Je třeba brát na zřetel, že struct FILE obsahuje vlastní buffer a ukazatel v uživatelském prostoru, tudíž po forku dojde k jeho duplikaci a vzájemné nezávislosti.

    Naopak int fd v uživ. prostoru je jen číslo, které si jádro spolu s PID přemapuje na interní deskriptor. Buffer file/socket descriptoru je v prostoru jádra a je jenom jeden.

    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.