buscando en fork()

Requisito previo: fork() en C , clasificación en fork()
Declaración del problema : escriba un programa para buscar el elemento clave en el proceso principal e imprima la clave que se buscará en el proceso secundario.

Ejemplos –

Input :
Key = 10;
array[5] = {3, 8, 4, 10, 80};

Output: 
Parent process 
key is  present in array
Child process 
numbers to be search is 10

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 búsqueda .
  • para el proceso secundario fork() devuelve 0 para que podamos realizar la impresión del valor de la clave que se buscará.
  • Aquí estamos usando un algoritmo de búsqueda simple para buscar el elemento clave en la array dada.
  • 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 searching
// in parent and printing result
// in child processes using fork()
#include <iostream>
#include <unistd.h>
using namespace std;
  
// Driver code
int main()
{
  
    int key = 10;
    int id = fork();
  
    // Checking value of process id returned by fork
    if (id > 0)  {
  
        cout << "Parent process \n";
  
        int a[] = { 3, 8, 4, 10, 80 };
        int n = 5;
        int flag;
        int i;
  
        for (i = 0; i < n; i++)
        {
  
            if (a[i] != key) {
                flag = 0;
            }
  
            else  {
  
                flag = 1;
            }
        }
  
        if (flag == 1) {
  
            cout << "key is not present in array";
        }
  
        else {
  
            cout << "key is present in array";
            cout << "\n";
  
        }
    }
  
    // If n is 0 i.e. we are in child process
    else {
  
        cout << "Child process \n";
        cout << "numbers to be search is ";
        cout << key;
    }
  
    return 0;
}

Producción –

Parent process 
key is  present in array
Child process 
numbers to be search is 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *