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 18:44 | Komunita

    Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.

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

    Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.

    🇨🇽 | Komentářů: 2
    včera 13:11 | Nová verze

    XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).

    🇨🇽 | Komentářů: 0
    včera 03:33 | Nová verze

    Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.

    Ladislav Hagara | Komentářů: 0
    25.12. 14:44 | Nová verze

    Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.

    Ladislav Hagara | Komentářů: 0
    24.12. 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 30
    24.12. 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (35%)
     (2%)
     (18%)
     (2%)
     (2%)
     (2%)
     (15%)
     (15%)
     (10%)
    Celkem 120 hlasů
     Komentářů: 18, poslední 24.12. 15:29
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Ako uspat program a prebudit ho v urcitom case (V C-ecku)

    16.10.2008 12:31 xsustek | skóre: 6
    Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Přečteno: 796×
    Zdravim,

    existuje nejaka C-eckova funkcia alebo systemove volanie (v Linuxe), ktore program uspi a zobudi ho v konkretnom case, tak aby nezral ziaden cas procesoru?

    Dik

    Odpovědi

    16.10.2008 12:34 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    sleep(3) alebo alarm(2)
    21.10.2008 06:58 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    jeste existuje syscall pause(), u ktereho si ale musite zaridit vzbuzeni predem. taky jde spat selectem, nanosleepem, a v pripade dvou procesu lze pouzit take (vzdusne) zamky.
    In Ada the typical infinite loop would normally be terminated by detonation.
    16.10.2008 12:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Záleží na okolnostech. Nejjednodušší asi bude použít sleep().
    16.10.2008 12:36 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    pozri si alarm, signály a čakanie na signály.
    20.10.2008 15:08 insider
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Neco podobnyho jsem jednou resil takhle:
    while( not the time ) sleep(10);
    ...
    
    Nejakej cas procesoru to sice zere, ale to ze se jednou za 10s provede tahle jednoducha smycka dnestni procesory nezatizi...
    20.10.2008 21:28 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)

    Pokud chceš uspávat jiný proces, lze se na něj připojit přes ptrace(2), čímž ho efektivně zastavíš, pak si ve svém procesu pospat, jak dlouho potřebuješ, a nakonec opět přes ptrace() se od něj odpojit, čímž se opět rozeběhne.

    Případně, což je přenositelnější, ale nevím, nakolik je možné se tomu bránit, zaslat signál SIGSTOP a potom SIGCONT.

    21.10.2008 06:57 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    sigstop neni chytatelnej podobne jako sigkill.
    In Ada the typical infinite loop would normally be terminated by detonation.
    21.10.2008 09:32 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Ano, jenže ještě tu je SIGCONT. Vyzkoušel jsem si, že jeho blokování nemá smysl. Ať už jej zablokuji nebo zaregistruji obsluhu, která nevolá tu původní, tak přesto se proces rozjede.
    21.10.2008 11:04 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    zaujímavé ... ako chcete vykonať obsluhu signálu, ak nechcete, aby sa proces rozbehol ? :-) Btw, skúste v obsluhe podmienené poslanie SIGSTOP samému sebe.
    21.10.2008 11:29 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    ako chcete vykonať obsluhu signálu, ak nechcete, aby sa proces rozbehol

    Úplně stejně, jako když proces je v přerušitelném spánku a dostane signál. Obsluhu totiž volá jádro a po vykonání obsluhy se řízení vrací jádru. To teprve pak rozhodne, zda proces přesune do fronty runable nebo jej opět uloží k ledu. Ano, přísně vzato, když jede obsluha, tak také běží proces. Myslel jsem rozběhnout program procesu v místě uspání (tedy mimo obsluhu).

    21.10.2008 11:44 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Zkuste si zastavený proces ukončit signálem TERM.
    21.10.2008 12:07 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Aha. Čekal jsem větší magii. Jak prosté.
    21.10.2008 10:52 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    To není uspání ale zastavení. Tazatel se ptal na to, jak uspat proces "zevnitř", na vaše řešení budete potřebovat spustit druhý samostatný proces, který tomu prvnímu signál CONT pošle. A co hůř, v tom druhém budete muset řešit přesně stejný problém, jaký tady řešíme pro ten první. Proti tomu mi prosté volání sleep() doplněné o smyčku pro případ přerušení signálem připadá podstatně jednodušší a praktičtější.
    21.10.2008 11:16 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Neni ta smycka zabudovana v glibc?
    In Ada the typical infinite loop would normally be terminated by detonation.
    21.10.2008 11:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Sama od sebe těžko, i manuálová stránka uvádí, že sleep() může skončit předčasně, pokud přijde neignorovaný signál. Obvykle se pro tyto účely používá makro TEMP_FAILURE_RETRY() nebo příznak SA_RESTART, ale tady to nejde, protože je potřeba při opakovaném volání upravit parametr.
    21.10.2008 15:56 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    v tom pripade se divim ze jeste nikdo neudelal funkci ktera by ten loop obsahovala.
    In Ada the typical infinite loop would normally be terminated by detonation.
    21.10.2008 16:24 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Jednak není problém si ji na pár řádků napsat, jednak většinou chcete, aby bylo možné čekání přerušit předčasně (např. právě jako reakci na určité signály).
    21.10.2008 11:21 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    To není uspání ale zastavení.

    Proces je runable, nebo není. Technicky v tom rozdíl není.

    Tazatel se ptal na to, jak uspat proces "zevnitř"

    To z dotazu mně není zřejmé. Opravdu jsem jej pochopil tak, že autor chce řídit jiný proces, ne ten svůj.

    21.10.2008 11:25 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Proces je runable, nebo není. Technicky v tom rozdíl není.

    Technicky v tom rozdíl je. Uspání je stav S (proces čeká na dokončení syscallu (který může být přerušen signálem), pak bude pokračovat), zastavení T (proces je administrativně zastaven zvenčí a pokračovat bude teprve tehdy, až dostane signál CONT).

    21.10.2008 11:31 xsustek | skóre: 6
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    Situacia je asi takato:

    Program sa spusti, urobi nejaku tu inicializaciu a potom sa forkne. Rodic bude periodicky v stavat ziska nejake informacie, potom sa zas uspi na nejaku dobu. Tieto informacie budu potomkovy dostupne cez zdielanu pamat. Potomok bude tiez spat, avsak uspi sa tak, ze bude cakat na UDP porte, pokial nepride nejaka poziadavka. Ked pride vytiahne urcite data zo zdielanej pamate, zpracuje a posle spat. Potom spi dalej. :)
    21.10.2008 11:40 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)
    V tom případě mi připadá sleep() resp. usleep() nebo nanosleep() jako nejvhodnější řešení.
    21.10.2008 11:54 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Ako uspat program a prebudit ho v urcitom case (V C-ecku)

    Už rozumím. Já jsem si vyložil slovo „uspat“ příliš široce. Samozřejmě, že tak, jak to říkáte, to je.

    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.