📜  在fork()中搜索

📅  最后修改于: 2021-05-30 04:16:57             🧑  作者: Mango

先决条件– C中的fork(),在fork()中排序
问题陈述–编写程序以在父进程中搜索关键元素,并在子进程中打印要搜索的密钥。

例子 –

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

说明–在这里,我们使用fork()函数创建了两个进程,一个子进程和一个父进程。

  • fork()对于父进程返回的值大于0,因此我们可以执行搜索操作。
  • 对于子进程fork()返回0,因此我们可以执行要搜索的键值的打印。
  • 在这里,我们使用一种简单的搜索算法来搜索给定数组中的关键元素。
  • 我们使用fork()的返回值来知道哪个进程是一个子进程或哪个是父进程。

注–在某些情况下,不必先执行子进程,也不必先分配父进程的CPU,任何进程都可以在某个时间分配CPU。此外,进程ID在不同的执行过程中可能会有所不同。

代码 –

// C++ program to demonstrate searching
// in parent and printing result
// in child processes using fork()
#include 
#include 
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;
}

输出 –

Parent process 
key is  present in array
Child process 
numbers to be search is 10
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”