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:33 | Komunita

Společnost Purism informuje o aktuálním vývoji chytrého telefonu Librem 5, jenž by měl respektovat bezpečnost, svobodu a soukromí uživatelů. Telefon už umí telefonovat. Librem 5 by měl být k dispozici v lednu 2019. Předobjednat jej lze za 599 dolarů.

Ladislav Hagara | Komentářů: 8
včera 09:00 | Bezpečnostní upozornění

Společnost Qualys zveřejnila výsledky bezpečnostního auditu procps-ng. Nalezeno bylo 7 bezpečnostních chyb (CVE-2018-1120, CVE-2018-1121, CVE-2018-1122, CVE-2018-1123, CVE-2018-1124, CVE-2018-1125 a CVE-2018-1126). Dvě z nich jsou zneužitelné k lokální eskalaci práv. Příslušné záplaty jsou již k dispozici v upstreamu.

Ladislav Hagara | Komentářů: 1
18.5. 06:44 | Nová verze

Byla vydána třiadvacátá alfa verze svobodné historické realtimové strategie 0 A.D. (Wikipedie). Kódový název této nejnovější verze je Ken Wood. Představení novinek v poznámkách k vydání a také na YouTube.

Ladislav Hagara | Komentářů: 3
18.5. 05:55 | Zajímavý článek

Tento týden se v Cambridge ve Velké Británii konal hackfest, který měl za cíl zlepšit výkon na GNOME postavených systémů na slabších počítačích. Hans de Goede například analyzoval spotřebu paměti jednotlivých komponent ve Fedora 28 Workstation na stroji s 2 GB RAM a pomocí kroků popsaných v článku Kde uspořit paměť ve Fedora Workstation na MojeFedora.cz snížil spotřebu paměti z 1,4 GB na 765 MB.

Ladislav Hagara | Komentářů: 8
17.5. 20:55 | Nová verze

Bram Moolenaar oznámil vydání verze 8.1 textového editoru Vim (Vi IMproved). Hlavní novinkou je integrovaný terminál.

Ladislav Hagara | Komentářů: 8
17.5. 16:55 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.27 a beta verze 1.28 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 6
17.5. 11:11 | Nová verze

Byla vydána verze 5.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Před měsícem slavil Proxmox VE 10 let (pdf).

Ladislav Hagara | Komentářů: 16
17.5. 10:22 | Nová verze

Byla vydána verze 4.8 a záhy na to opravná verze 4.8.1 svobodné náhrady proprietárních BIOSů coreboot (Wikipedie). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 10
16.5. 05:55 | Komunita

Správce souborů (Files, Soubory, Nautilus) v nejnovějším GNOME 3.28 již neumožňuje zobrazovat ikony na ploše. Dalším vylepšením bude pravděpodobně odstranění možnosti spouštění aplikací (commit) přímo ze správce souborů.

Ladislav Hagara | Komentářů: 126
16.5. 04:44 | IT novinky

Dnes končí crowdfundingová kampaň na podporu modulárního open source routeru Turris MOX od CZ.NIC. Cílová částka 250 tisíc dolarů byla vybrána. Z posledních novinek představených v rámci kampaně lze zmínit demo webového rozhraní, spolupráci s Nextcloudem a Turris MOX: Cloud nebo konfigurátor pro testování kompatibility jednotlivých modulů.

Ladislav Hagara | Komentářů: 19
Používáte pro některé služby inetd?
 (32%)
 (26%)
 (43%)
Celkem 129 hlasů
 Komentářů: 3, poslední 9.5. 08:05
    Rozcestník

    Dotaz: Chycení výjimky v C

    29.12.2015 20:41 Jardík
    Chycení výjimky v C
    Přečteno: 562×
    Zahrávám si s myšlenkou chytit např. C++ výjimku v C kódu. Chápu, že to nebude přenositelné. Četl jsem nějakou dokumentaci k libunwind a našel způsob, jak z C vyhodím výjimku (musím linkovat k libgcc nebo k libunwind). Taky má GCC attribut cleanup, který mi zavolá funkci, když nějaká C++ funkce (callback) vyhodí výjimku, taže bych uměl i uklidit. Mou z C vyhozenou výjimku (pomocí _Unwind_RaiseException) dokáže chytit C++ catch(...) blok. Zajímalo by mě ale, jestli jde nějak kompilátoru (GCC) říct, aby zavolal nějakou funkci či skočil na návěští, když callback vyhodí výjimku. Prostě jen tak ze zvědavosti. Zahrávám si s myšlenkou v blízké budoucnosti vytvořit překladač nespecifikovaného jazyka do C a chtěl bych tam mít i výjimky, aniž bych použil C++, ale chtěl bych, aby to volalo i C++ destruktory a dalo se to chytit v catch(...) bloku, zavolá-li mou funkci někdo z C++.
    // throwing_code.c
    
    #include <stdint.h>
    #include <stdio.h>
    
    typedef enum {
    	_URC_NO_REASON = 0,
    	_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
    	_URC_FATAL_PHASE2_ERROR = 2,
    	_URC_FATAL_PHASE1_ERROR = 3,
    	_URC_NORMAL_STOP = 4,
    	_URC_END_OF_STACK = 5,
    	_URC_HANDLER_FOUND = 6,
    	_URC_INSTALL_CONTEXT = 7,
    	_URC_CONTINUE_UNWIND = 8
        } _Unwind_Reason_Code;
        
    typedef struct _Unwind_Exception _Unwind_Exception;
    
    typedef void (*_Unwind_Exception_Cleanup_Fn)
    		(_Unwind_Reason_Code reason, _Unwind_Exception *exc);
    
    struct _Unwind_Exception {
    	    uint64_t			 exception_class;
    	    _Unwind_Exception_Cleanup_Fn exception_cleanup;
    	    uint64_t			 private_1;
    	    uint64_t			 private_2;
        };
    
    
    extern _Unwind_Reason_Code
    _Unwind_RaiseException(_Unwind_Exception *e);
    
    
    void exception_cleanup(_Unwind_Reason_Code reason, _Unwind_Exception *e)
    {
    	printf("Exception cleanup, reason = %i, e = %p\n", (int)reason, (void*)e);
    }
    
    
    _Unwind_Exception e = {
    	((uint64_t)('J') << 56) | ((uint64_t)('A') << 48) | ((uint64_t)('R') << 40) |
    	((uint64_t)('D') << 32) | ((uint64_t)('I') << 24) | ((uint64_t)('K') << 16) |
    	((uint64_t)('\0') << 8) | ((uint64_t)('\0') << 0),
    	exception_cleanup,
    	0,
    	0
    };
    
    void throwing_code_throw()
    {
    	_Unwind_RaiseException(&e);
    }
    
    // catching_code.cpp
    
    #include <cstdio>
    
    extern "C" void throwing_code_throw();
    
    int main(int argc, char **argv)
    {
    	try {
    		throwing_code_throw();
    		printf("after exception\n");
    	}
    	catch (...) {
    		printf("caught exception\n");
    	}
    	return 0;
    }
    

    Odpovědi

    kozzi avatar 30.12.2015 17:53 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Chycení výjimky v C

    Zrovna na toto tema se nedavno vedla diskuze u jazyka D. A pokud vim tak se uz i nekam pokrocilo a v blizko dobe bude mozne v D chytat vyjimky z C++. Takze mozna se poptat nekoho z fora D.

    nejaka prace uz je i zaclenena ale nevim zda ti to bude uzitecne

    https://github.com/D-Programming-Language/dmd/pulls?utf8=✓&q=is%3Apr+author%3AWalterBright+

    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    31.12.2015 02:18 Jardík
    Rozbalit Rozbalit vše Re: Chycení výjimky v C
    Kouknu na to, díky.
    DaBler avatar 31.12.2015 09:26 DaBler | skóre: 13 | blog: dabler | Brno
    Rozbalit Rozbalit vše Re: Chycení výjimky v C

    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.