Requisito previo: introducción de fork() , algoritmos de clasificación
Declaración del problema: escribir un programa para clasificar los números en el proceso principal e imprimir los números sin clasificar en el proceso secundario. Por ejemplo :
Input : 5, 2, 3, 1, 4 Output : Parent process sorted numbers are 1, 2, 3, 4, 5 Child process numbers to sort are 5, 2, 3, 1, 4
Explicación: aquí, usamos la función fork() para crear dos procesos, un proceso secundario y uno principal.
- fork() devuelve un valor mayor que 0 para el proceso principal para que podamos realizar la operación de clasificación.
- para child process fork() devuelve 0 para que podamos realizar la operación de impresión.
- Aquí estamos usando un algoritmo de clasificación simple para clasificar los números en el orden deseado.
- Estamos utilizando los valores devueltos por fork() para saber qué proceso es un proceso secundario o uno principal.
Nota: en algún momento, no es necesario que el proceso secundario se ejecute primero o que el proceso principal reciba primero la CPU asignada, a cualquier proceso se le puede asignar la CPU, en algún momento cuántico. Además, la identificación del proceso puede diferir durante diferentes ejecuciones.
Código –
// C++ program to demonstrate sorting in parent and // printing result in child processes using fork() #include <iostream> #include <unistd.h> #include <algorithm> using namespace std; // Driver code int main() { int a[] = { 1, 6, 3, 4, 9, 2, 7, 5, 8, 10 }; int n = sizeof(a)/sizeof(a[0]); int id = fork(); // Checking value of process id returned by fork if (id > 0) { cout << "Parent process \n"; sort(a, a+n); // Displaying Array cout << " sorted numbers are "; for (int i = 0; i < n; i++) cout << "\t" << a[i]; cout << "\n"; } // If n is 0 i.e. we are in child process else { cout << "Child process \n"; cout << "\n numbers to be sorted are "; for (int i = 0; i < n; i++) cout << "\t" << a[i]; } return 0; }
Producción –
Output : Parent process sorted numbers are 1 2 3 4 5 6 7 8 9 10 Child process numbers to be sorted are 1 6 3 4 9 2 7 5 8 10
Este artículo es una contribución de Pushpanjali Chauhan . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA