কম্পিউটার

ফর্ক() এবং পাইপ() প্রদর্শনের জন্য সি প্রোগ্রাম


এই সমস্যায়, আমরা ফর্ক() এবং পাইপ() প্রদর্শন করব। এখানে আমরা লিনাক্সের জন্য একটি সি প্রোগ্রাম তৈরি করব যা দুটি স্ট্রিংকে সংযুক্ত করবে, 2টি প্রক্রিয়া ব্যবহার করে একটি ইনপুট নেবে এবং অন্যদের কাছে পাঠাবে যা একটি পূর্বনির্ধারিত স্ট্রিং দিয়ে স্ট্রিংকে সংযুক্ত করবে এবং সংযুক্ত স্ট্রিং ফেরত দেবে।

প্রথমে চলুন রিক্যাপ ফর্ক() এবং পাইপ()

কাঁটা() - এটি একটি শিশু প্রক্রিয়া তৈরি করে, এই শিশু প্রক্রিয়াটি একটি নতুন পিআইডি এবং পিপিআইডি তৈরি করে৷

পাইপ() একটি ইউনিক্স, লিনাক্স সিস্টেম কল যা আন্তঃপ্রক্রিয়া যোগাযোগের জন্য ব্যবহৃত হয়।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

Learn programming
Predefined string: at tutorialspoint

আউটপুট

Learn programming at tutorialspoint

ব্যাখ্যা

P1 take input of string “learn programming”

পাইপ ব্যবহার করে P2 এ পাঠায়।

P2 স্ট্রিংগুলিকে সংযুক্ত করে এবং p1-এ ফেরত পাঠায় যা এটি প্রিন্ট করে।

প্রোগ্রামে, আমরা ফর্ক() ফাংশন ব্যবহার করে P1 এবং P2 দুটি প্রসেস তৈরি করব। এতে নিম্নলিখিত তিনটি রিটার্ন মান রয়েছে যা প্রোগ্রামের অবস্থা দেখায়।

রিটার্ন মান <0, প্রক্রিয়া তৈরি ব্যর্থ হয়েছে।

রিটার্ন মান =0, চাইল্ড প্রসেস।

রিটার্ন মান> 0, যা পিতামাতার প্রক্রিয়াতে শিশু প্রক্রিয়ার প্রক্রিয়া আইডি হবে অর্থাৎ অভিভাবক প্রক্রিয়াটি কার্যকর করা হবে৷

আমরা দুটি পাইপ তৈরি করব একটি P1 থেকে P2 এবং অন্যটি P2 থেকে P1 যোগাযোগের জন্য কারণ পাইপটি একমুখী।

ফর্ক() এবং পাইপ() প্রদর্শনের জন্য সি প্রোগ্রাম

উদাহরণ

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
#include<sys/wait.h>
int main(){
   int p12[2];
   int p21[2];
   char fixed_str[] = " at tutorialspoint";
   char input_str[100];
   pid_t P;
   if (pipe(p12)==-1 || pipe(p21)==-1 ){
      fprintf(stderr, "Filed to create pipe" );
      return 1;
   }
   scanf("%s", input_str);
   P = fork();
   if (P < 0){
      fprintf(stderr, "fork Failed" );
      return 1;
   }
   else if (P > 0){
      char concat_str[100];
      close(p12[0]);
      write(p12[1], input_str, strlen(input_str)+1);
      close(p12[1]);
      wait(NULL);
      close(p21[1]);
      read(p21[0], concat_str, 100);
      printf("Concatenated string %s\n", concat_str);
      close(p21[0]);
   }
   else{
      close(p12[1]);
      char concat_str[100];
      read(p12[0], concat_str, 100);
      int k = strlen(concat_str);
      int i;
      for (i=0; i<strlen(fixed_str); i++)
      concat_str[k++] = fixed_str[i];
      concat_str[k] = '\0';
      close(p12[0]);
      close(p21[0]);
      write(p21[1], concat_str, strlen(concat_str)+1);
      close(p21[1]);
      exit(0);
   }
}

আউটপুট

Concatenated string Learn at tutorialspoint

  1. একটি প্রদত্ত স্ট্রিং এর n অক্ষর মুছে ফেলার জন্য সি প্রোগ্রাম

  2. সি প্রোগ্রাম nCr এবং nPr খুঁজুন।

  3. পোস্ট ইনক্রিমেন্ট এবং প্রি ইনক্রিমেন্ট অপারেটর প্রদর্শনের জন্য একটি সি প্রোগ্রাম লিখুন

  4. সি প্রোগ্রাম স্ট্রিং এবং তাদের ঠিকানা পয়েন্টার অ্যারে মুদ্রণ