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 03:00 | Nová verze

    Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    včera 03:00 | Komunita

    Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.

    Ladislav Hagara | Komentářů: 4
    9.1. 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 4
    9.1. 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 0
    9.1. 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 6
    9.1. 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    9.1. 00:11 | Nová verze

    Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.1. 20:44 | IT novinky

    Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou

    … více »
    NUKE GAZA! 🎆 | Komentářů: 13
    8.1. 16:33 | Zajímavý projekt

    Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.

    Ladislav Hagara | Komentářů: 0
    8.1. 14:11 | IT novinky

    Český Nejvyšší soud potvrdil, že česká právní úprava plošného uchování dat o elektronické komunikaci porušuje právo Evropské unie. Pravomocným rozsudkem zamítl dovolání ministerstva průmyslu a obchodu. To se teď musí omluvit novináři Českého rozhlasu Janu Cibulkovi za zásah do práv na ochranu soukromí a osobních údajů. Ve sporu jde o povinnost provozovatelů sítí uchovávat údaje, ze kterých lze odvodit, kdo, s kým a odkud komunikoval.

    Ladislav Hagara | Komentářů: 19
    Které desktopové prostředí na Linuxu používáte?
     (7%)
     (5%)
     (0%)
     (9%)
     (20%)
     (4%)
     (5%)
     (3%)
     (10%)
     (51%)
    Celkem 352 hlasů
     Komentářů: 8, poslední včera 23:18
    Rozcestník

    Dotaz: C - SIGUSR1 pomocí kill a sigaction

    24.11.2014 20:43 BamBam
    C - SIGUSR1 pomocí kill a sigaction
    Přečteno: 326×
    Vytvářím program , který vytvoří dva procesy, které propojuji rourou. První potomek přesměruje svůj výstup do roury a bude do něj zapisovat dvojice náhodných čísel oddělené mezerou. Mezi zápisy čísel mám prodlevu 1 sekundu. Druhý potomek přesměruje výstup roury na svůj standardní vstup, přesměruje svůj výstup do souboru s názvem out.txt.

    Chci udělat, aby rodičovský proces počkal 5 sekund a poté poslal signál SIGUSR1 prvnímu procesu (generátoru čísel) pomocí kill, což způsobí korektní ukončení obou procesů. Počká na ukončení procesů a poté se ukončí.

    Ale nevím jakým způsobem v prvním procesu ošetřit signál SIGUSR1 pomocí sigaction, tak aby po přijmutí signálu, vypsal něco na svůj chybový výstup a ukončil se.

    #define NAZEV "out.txt"

    int main() { FILE *soubor; soubor = fopen(NAZEV, "a+");

    int roura[2]; pipe(roura);

    pid_t pid1; int retcode; pid1=fork(); if(pid1 == 0) // potomek1 { close(roura[0]); printf("Potomek1...\n"); dup2(roura[1], STDOUT_FILENO); // presmerovani výstupu do roury

    int i = 0; while(i < 6) { i++; int a = rand(); int b = rand(); sleep(1); printf("%d %d\n", a, b); } close(roura[1]); exit(45);

    } else if (pid1 < 0) { printf("Fork selhal\n"); exit(2); } else { pid_t pid2; pid2 = fork(); if (pid2 == 0) //potomek 2 { close(roura[1]);

    /*presmerovani výstup roury na svůj standardní vstup */ dup2(roura[0], STDIN_FILENO);

    printf("Potomek2...\n"); int i = 0; while(i < 5) { i++; int c; int d; scanf("%d %d", &c, &d); printf("%d %d\n", c, d); fprintf(soubor,"%d %d\n", c, d); }

    printf("Potomek2 skoncil\n"); exit(0); } else if (pid2 < 0) { printf("Fork selhal\n"); exit(2); }else { sleep(5]; kill(pid1, SIGUSR1); wait(&pid1); //ceka na potomka1 wait(&pid2); //ceka na potomka2 printf("Rodic konci\n"); exit(0); } } exit(0); }

    Řešení dotazu:


    Odpovědi

    24.11.2014 20:52 BamBam
    Rozbalit Rozbalit vše Re: C - SIGUSR1 pomocí kill a sigaction

    #define NAZEV "out.txt"

    int main()
    {
    FILE *soubor;
    soubor = fopen(NAZEV, "a+");
    int roura[2];
    pipe(roura);
    pid_t pid1;
    int retcode;
    pid1=fork();
    if(pid1 == 0) // potomek1
    {
    close(roura[0]);
    printf("Potomek1...\n");
    dup2(roura[1], STDOUT_FILENO); // presmerovani výstupu do roury
    int i = 0;
    while(i < 6)
    {
    i++;
    int a = 2 + i;
    int b = 4 + i;
    sleep(1);
    printf("%d %d\n", a, b);
    }
    close(roura[1]);
    exit(45);
    } else if (pid1 < 0)
    {
    printf("Fork selhal\n");
    exit(2);
    } else
    {
    pid_t pid2;
    pid2 = fork();
    if (pid2 == 0) //potomek 2
    {
    close(roura[1]);
    dup2(roura[0], STDIN_FILENO); //presmerovani výstup roury na svůj standardní vstup
    printf("Potomek2...\n");
    int i = 0;
    while(i < 5)
    {
    i++;
    int c;
    int d;
    scanf("%d %d", &c, &d);
    printf("%d %d\n", c, d);
    fprintf(soubor,"%d %d\n", c, d);
    }
    printf("Potomek2 skoncil\n");
    exit(0);
    } else if (pid2 < 0)
    {
    printf("Fork selhal\n");
    exit(2);
    }else
    { wait(&pid1); //ceka na potomka1
    wait(&pid2); //ceka na potomka2 
    printf("Rodic konci\n");
    exit(0);
    }
    }
    exit(0);
    }

    24.11.2014 22:34 Sten
    Rozbalit Rozbalit vše Re: C - SIGUSR1 pomocí kill a sigaction
    Váš kód v sigaction někam poznamená, že přišel signál. Ten proces bude v tu dobu nejspíš viset na sleep, který příchozí signál přeruší s EINTR, ale nemusí, takže je vhodné to otestovat i před tím sleepem. Stačí se pak podívat, jestli byl poznamenán příchod signálu, a pokud ano, tak proces ukončit. Pokud nepotřebujete po přerušení uklidit, tak ukončit proces jde i ze sigaction pomocí _exit().

    Mimochodem pokud potřebujete zastavit zapisující proces ze čtecího, stačí ve čtecím procesu tu rouru zavřít. Zapisovací proces pak při pokusu o zápis dostane SIGPIPE.

    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.