Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी कार्यक्रम कांटा () और पाइप () प्रदर्शित करने के लिए

इस समस्या में, हम कांटा () और पाइप () प्रदर्शित करेंगे। यहां हम लिनक्स के लिए एक सी प्रोग्राम बनाएंगे जो दो स्ट्रिंग को जोड़ देगा, 2 प्रक्रियाओं का उपयोग करके एक इनपुट लेगा और इसे दूसरों को भेज देगा जो स्ट्रिंग को एक पूर्वनिर्धारित स्ट्रिंग के साथ जोड़ देगा और कॉन्टेनेटेड स्ट्रिंग को वापस कर देगा।

सबसे पहले फोर्क () और पाइप () को फिर से तैयार करें

कांटा () - यह एक चाइल्ड प्रोसेस बनाता है, यह चाइल्ड प्रोसेस एक नया PID और PPID है।

पाइप () एक यूनिक्स, लिनक्स सिस्टम कॉल है जिसका उपयोग अंतर-प्रक्रिया संचार के लिए किया जाता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

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. सी प्रोग्राम एनसीआर और एनपीआर खोजें।

    C प्रोग्रामिंग भाषा में, nCr संयोजन . के रूप में जाना जाता है . nCr, n वस्तुओं के एक समूह से r वस्तुओं का चयन है, जहाँ वस्तुओं का क्रम मायने नहीं रखता। nPr क्रमपरिवर्तन . के रूप में जाना जाता है . nPr n ऑब्जेक्ट्स के एक सेट से r ऑब्जेक्ट्स की व्यवस्था है, जो एक क्रम या क्रम में होना चाहिए। क्रमपरिव

  1. पोस्ट इंक्रीमेंट और प्री इंक्रीमेंट ऑपरेटरों को प्रदर्शित करने के लिए C प्रोग्राम लिखें

    इन्क्रीमेंट ऑपरेटर (++) इसका उपयोग चर के मान को 1 से बढ़ाने के लिए किया जाता है। दो प्रकार के वेतन वृद्धि ऑपरेटर हैं, पूर्व-वृद्धि और बाद-वृद्धि। इंक्रीमेंट ऑपरेटर को प्री-इंक्रीमेंट में ऑपरेंड से पहले रखा जाता है और पहले मान बढ़ाया जाता है और फिर उस पर ऑपरेशन किया जाता है। उदाहरण के लिए, z

  1. सी प्रोग्राम स्ट्रिंग्स और उनके पते पर पॉइंटर्स की सरणी मुद्रित करने के लिए

    सबसे पहले, आइए समझते हैं कि C प्रोग्रामिंग भाषा में पॉइंटर्स की सरणियाँ क्या हैं। पॉइंटर्स की सरणी:(स्ट्रिंग्स के लिए) यह एक सरणी है जिसके तत्व स्ट्रिंग के आधार जोड़ के ptrs हैं। इसे निम्नानुसार घोषित और आरंभ किया गया है - char *a[ ] = {"one", "two", "three"};