Adarkatze (sistema eragileak)

Fork (sistema eragileak)» orritik birbideratua)
Artikulu hau ataza-anitzeko edo hari-anitzeko sistema eragileetako prozesuen "fork" edo "semeei" buruz da.

Ordenagailu terminologian ordenagailu prozesu batek bere buruaren kopia bat egiteari esaten zaio fork, non honek ondoren prozesu originalaren edo aita prozesuaren seme prozesu bezala funtzionatzen duen. Normalean, hari-anitzeko ingurune batean fork bat egitean exekuzio hari bat bikoiztu egin dela izaten da.

Unix eta Unix-moduko sistema eragileetan, prozesu aita eta prozesu semea fork() sistema deialdiaren erantzunaren arabera hautatzen dira. Seme prozesuan, fork()-en erantzuna 0 da, eta prozesu aitaren kasuan sortu berri den prozesuaren PIDa.

Fork-i deitzearekin bat, semearentzat helbide espazio ezberdin bat egongo da. Seme prozesuak aita prozesuaren segmentuen kopia zehatz bat izango du. Prozesu semeak eta aitak batak bestearekiko guztiz independente funtzionatu dezakete.

Adibidea aldatu

Hemen C programazio lengoaia idatzitako kode bat. "Seme prozesua"n eta "Aita prozesua"n sekzioak batera exekutatuko dira

   int pid;

   pid = fork();

   if(pid == 0)
   {
      /* Seme prozesua:
       * fork()-ek 0 itzultzean
       * seme prozesuan gaude.
       * Orain 10 arte zenbatu, batetik bestera segundoa itxaronez.
       */
      int j;
      for(j=0; j < 10; j++)
      {
         printf("Semea: %d\n", j);
         sleep(1);
      }
      _exit(0); /* Ohartu ez dugula exit() erabiltzen */
   }
   else if(pid > 0)
   { 
      /* Aita prozesua:
       * Bestela aita prozesuan gaude.
       * Berriz 10 arte zenbatu.
       */
      int i;
      for(i=0; i < 10; i++)
      {
         printf("Aita: %d\n", i);
         sleep(1);
      }
   }
   else
   {   
      /* Errore kontrola. */
      fprintf(stderr, "Ezin izan da fork egin");
      exit(1);
   }

Kode honek honakoa erakutsiko du:

 aita: 0
 semea: 0
 semea: 1
 aita: 1
 aita: 2
 semea: 2
 semea: 3
 aita: 3
 aita: 4
 semea: 4
 semea: 5
 aita: 5
 aita: 6
 semea: 6
 semea: 7
 aita: 7
 aita: 8
 semea: 8
 semea: 9
 aita: 9

Irteera ordena kernelak ezartzen du.

Ikus, gainera aldatu

Kanpo estekak aldatu