uni

University stuff
git clone git://git.christosmarg.xyz/uni-assignments.git
Log | Files | Refs | README | LICENSE

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 }