ex1.c (1527B)
1 #include <unistd.h> 2 3 /* 4 * Εργαστήριο ΛΣ2 (Δ6) / Εργασία 1: Άσκηση 1 / 2020-2021 5 * Ονοματεπώνυμο: Χρήστος Μαργιώλης 6 * ΑΜ: 19390133 7 * Τρόπος μεταγλώττισης: `cc ex1.c -o ex1` 8 */ 9 10 int 11 main(int argc, char *argv[]) 12 { 13 pid_t pid1, pid2, pid3, pid4, pid5; 14 15 /* 16 * Το παρακάτω πρόγραμμα παράγει 7 διεργασίες. Το παρακάτω διάγραμμα 17 * περιγράφει την συγγένεια μεταξύ των διεργασιών που δημιουργήθηκαν. 18 * 19 * P0 20 * / | \ 21 * P2 P1 P3 22 * / | 23 * P3 P4 24 * | 25 * P5 26 * 27 * Πιο αναλυτικά, το πρόγραμμα λειτουργεί ως εξής: 28 * - pid1 = fork(): δημιουργείται από την αρχική διεργασία ένα 29 * child. 30 * - Αν βρισκόμαστε στον πατέρα, τότε 31 * - pid2 = fork(); 32 * - pid3 = fork(); 33 * Δηλαδή δημιουργούμε άλλες 3 διεργασίες. 34 * - Αν βρισκόμαστε στο παιδί, δημιουργούμε άλλη μία διεργασία 35 * με την pid4 = fork(). 36 * - Το παιδί που δημιουργεί η παραπάνω διεργασία, παράγει άλλη 37 * μία διεργασία με την pid5 = fork(). 38 */ 39 40 if ((pid1 = fork()) != 0) { 41 pid2 = fork(); 42 pid3 = fork(); 43 } else { 44 if ((pid4 = fork()) == 0) 45 pid5 = fork(); 46 } 47 48 return 0; 49 }