Διεργασίες POSIX στη C
Παράδειγμα 0
Απλό παράδειγμα με την fork().
Μεταγλώττιση και εκτέλεση
gcc -Wall fork_example0.c -o fork_example0
./fork_example0
Έξοδος
A. value of x is 5 as reported by process:6962
B. value of x is 6 as reported by process:6962
B. value of x is 4 as reported by process:6963
Παράδειγμα 1
Παράδειγμα με 2 διεργασίες που η διεργασία γονέας περιμένει τη διεργασία παιδί για να ολοκληρώσει την εκτέλεσή της.
Μεταγλώττιση και εκτέλεση
$ gcc -Wall fork_example1.c -o fork_example1 $ ./fork_example1
Έξοδος
A. value of x is 5
B. value of x is 5
D. parent process 7047 with child 7048, value of x is 4
B. value of x is 5
C. child process 7048 having parent 7047, value of x is 6
hello
E. value of x is 4
Προσοχή: Η γραμμή Ε δεν εμφανίζεται από τη διεργασία “παιδί” διότι έχει πλέον αντικατασταθεί ο κώδικας που εκτελείται από τη διεργασία αυτή μέσω της execl από το πρόγραμμα echo.
Παράδειγμα 2
Παράδειγμα επικοινωνίας διεργασιών μέσω pipe.
Μεταγλώττιση και εκτέλεση
gcc -Wall fork_example2.c -o fork_example2
./fork_example2
Έξοδος
child process got data Greetings from parent process
Παράδειγμα 3
Μεταγλώττιση και εκτέλεση
make -f mf3.mk
make -f mf3.mk run
Έξοδος
./fork_example3 56
Parent process: Collatz sequence for 56: 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Child process: Collatz sequence for 57: 172 86 43 130 65 196 98 49 148 74 37 112 56 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Και τα 4 παραδείγματα μπορούν να μεταγλωττιστούν μαζί με την εντολή:
make