Ero sivun ”Fork()” versioiden välillä

Siirry navigaatioon Siirry hakuun
88 merkkiä lisätty ,  15. lokakuuta 2016
→‎Taustaprosessin luominen: ISO C90 kieltää esittelyjen ja koodin sekoittamisen
(→‎Esimerkki: source tagit)
(→‎Taustaprosessin luominen: ISO C90 kieltää esittelyjen ja koodin sekoittamisen)
 
(2 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä)
Rivi 2: Rivi 2:


==Prototyyppi==
==Prototyyppi==
pid_t fork()
pid_t fork()


===Paluuarvo===
===Paluuarvo===
Rivi 17: Rivi 17:
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <unistd.h>
#include <sys/types.h>


int main() {
int main() {
        pid_t pid;
         printf("Luodaan taustaprosessi\n");
         printf("Luodaan taustaprosessi\n");
         pid_t pid = fork();
         pid = fork();
         if (pid==0)    /* Lapsiprosessille pid näkyy nollana */
         if (pid==0)    /* Lapsiprosessille pid näkyy nollana */
                 printf("Olen lapsiprosessi\n");
                 printf("Olen lapsiprosessi\n");
Rivi 42: Rivi 44:
===[[demoni|Taustaprosessin]] luominen===
===[[demoni|Taustaprosessin]] luominen===
fork-funktion ajavan ohjelman toinen osa jää taustalle ja alkuperäinen ohjelma voidaan sammuttaa. Esimerkkikoodi:
fork-funktion ajavan ohjelman toinen osa jää taustalle ja alkuperäinen ohjelma voidaan sammuttaa. Esimerkkikoodi:
<pre>
<source lang="c">
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <unistd.h>
#include <sys/types.h>


int main() {
int main() {
        pid_t pid;
         printf("Luodaan taustaprosessi\n");
         printf("Luodaan taustaprosessi\n");
         pid_t pid = fork();
         pid = fork();


         if (pid > 0) return 0;      /* Isäntäprosessi loppuu */
         if (pid > 0) return 0;      /* Isäntäprosessi loppuu */
Rivi 56: Rivi 60:
         return 0;
         return 0;
}
}
</pre>
</source>
Tallennetaan koodi tiedostoon <tt>taustaprosessi.c</tt>, käännetään se komennolla <tt>gcc taustaprosessi.c -o taustaprosessi</tt> ja ajetaan se (<tt>./taustaprosessi</tt>). Tuloste on seuraavanlainen:
Tallennetaan koodi tiedostoon <tt>taustaprosessi.c</tt>, käännetään se komennolla <tt>gcc taustaprosessi.c -o taustaprosessi</tt> ja ajetaan se (<tt>./taustaprosessi</tt>). Tuloste on seuraavanlainen:
  $ ./taustaprosessi
  $ ./taustaprosessi

Navigointivalikko