abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.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. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 9
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

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

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

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

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 2
    včera 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 743 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    24.4.2010 16:26 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Prace se soubory
    Ok tak pro úplnost:
    typedef struct counter
    {
      int count; 
    } COUNTER;
    
    int processedEvent(sem_t *semId, FILE* soubor, int shmid, COUNTER *sharedStuff)
    {
      int retCode = 0;
      void *sharedMemory = (void *) 0;
      // Zpristupneni sdilene pameti programu
      sharedMemory = shmat(shmid, (void *) 0, 0);
      if (sharedMemory == (void *) -1)
      {
        return -1;
      }
      // Zablokovani semaforu
      retCode = sem_wait(semId);
      if (retCode == -1)
      {
        return -1;
      }
      //*****KS*****
      sharedStuff = (struct counter *) sharedMemory;
      sharedStuff->count ++;
      fprintf(soubor, "%d"\n", sharedStuff->count;
      //*****KS*****
      // Odblokovani semaforu
      retCode = sem_post(semId);
      if (retCode == -1)
      {
        return -1;
      }
      // Zavreni semaforu
      retCode = sem_close(semId);
      if (retCode == -1)
      {
        return -1;
      }
      // Odpojeni sdilene pameti
      retCode = shmdt(sharedMemory);
      if (retCode == -1)
      {
        return -1;
      }
      return 0;
    }
    
    int main()
    { 
      pid_t pid;
      sem_t *semIdA;
      
      int retCode = 0;
      int shmid = 0;
      int i = 0;
      int stepsNumber = 0;
      void *sharedMemory = (void *) 0;
      struct counter *sharedStuff;
    
      // Prace se souborem
      FILE *fw;
      fw = fopen("soubor.txt", "w");
      if (fw == NULL)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Vytvoreni sdilene pameti;
      shmid = shmget((key_t)jmeno, N *sizeof(int), 0666 | IPC_CREAT);
      if (shmid == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Zpristupneni sdilene pameti programu;
      sharedMemory = shmat(shmid, (void *) 0, 0);
      if (sharedMemory == (void *) -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      
      sharedStuff = (struct counter *) sharedMemory;
      sharedStuff->count=0;
      printf("Pocet: %d\n", sharedStuff->count);
      
      // Odpojeni sdilene pameti;
      retCode = shmdt(sharedMemory);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Vytvoreni semaforu;
      semIdA = sem_open(SEM_NAMEa, O_CREAT, 0666, 0);
      if (semIdA == SEM_FAILED)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Odemknuti semaforu;
      retCode = sem_post(semIdA);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Vytvoreni podprocesu;
      for (; i<2; i++)
      {
        pid = fork();
        switch (pid)
        {
          case -1:
    	// Uvolneni prostredku;
    	fprintf(stderr, "Failed...\n");
            exit(EXIT_FAILURE);
    	break;
          case 0:
    	while (stepsNumber != 0)
    	{
    	  processedEvent(semIdA, fw, shmid, sharedStuff, i);
    	  stepsNumber--;
    	}
    	// Uzavreni souboru
    	retCode = fclose(fw);
    	if (retCode == EOF)
    	{
    	  fprintf(stderr, "Failed...\n");
    	  exit(EXIT_FAILURE);
    	}
    	exit(EXIT_SUCCESS);
    	break;
          default:
    	children[i] = pid;
    	break;
        }
      } 
      }
      // Zavreni semaforu;
      retCode = sem_close(semIdA);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Uvolneni porstredku semaforu;
      retCode = sem_unlink(SEM_NAMEa);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Zpristupneni sdilene pameti programu;
      sharedMemory = shmat(shmid, (void *) 0, 0);
      if (sharedMemory == (void *) -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }  
      // Odpojeni sdilene pameti;
      retCode = shmdt(sharedMemory);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      }
      // Smazani sdilene pameti;
      retCode = shmctl(shmid, IPC_RMID, 0);
      if (retCode == -1)
      {
        fprintf(stderr, "Failed...\n");
        exit(EXIT_FAILURE);
      } 
      
      exit(EXIT_SUCCESS);
    }
    

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.