यूनिक्स पाइप (|) है जो किसी प्रक्रिया के आउटपुट को पाइपलाइन करता है और पाइपलाइन को "पाइप (int pipefd [2])" का उपयोग करके सी में इस्तेमाल किया जाता है, जिसमें इंटर प्रोसेस संचार के लिए इस्तेमाल किया जाता है?यूनिक्स पाइप (|) और पाइप हम सी में "पाइप (int pipefd [2])" का उपयोग कर बनाते हैं?
उत्तर
वे pipe(2)
पर कॉल करने के अर्थ में काफी समान नहीं हैं, खोल के |
के बराबर फ़ंक्शन को लागू करने के लिए पर्याप्त नहीं है।
pipe(2)
दो फ़ाइल वर्णनकर्ता (अंत पढ़ सकते हैं और अंत बारे में) पैदा करता है। लेकिन आपको |
कार्यक्षमता को लागू करने के लिए उससे अधिक करने की आवश्यकता है।
एक पाइप बनाने की विशिष्ट अनुक्रम इस प्रकार है:
1) एक पढ़ा अंत और एक लिखने अंत pipe(2)
का उपयोग कर बनाएँ।
2) एक बच्चे की प्रक्रिया fork()
का उपयोग कर बनाएँ।
3) जनक और बच्चे प्रक्रियाओं dup2()
का उपयोग कर फ़ाइल वर्णनकर्ता नकल।
4) दोनों प्रक्रियाओं, प्रत्येक पाइप (पाइप कि प्रत्येक प्रक्रिया का उपयोग नहीं करते के एक छोर) के एक छोर बंद कर देता है।
5) एक पाइप के लिए लिखते हैं और पाइप से अन्य पढ़ता है।
यह दिखाने के लिए सरल उदाहरण पर विचार करें। इसमें आप एक फ़ाइल नाम को तर्क के रूप में पास करते हैं और मूल प्रक्रिया उस फ़ाइल को "greps" करती है जो बच्चे द्वारा cat
है।
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int pipefd[2];
int pid;
char *cat_args[] = {"cat", argv[1], NULL};
char *grep_args[] = {"grep", "search_word", NULL};
pipe(pipefd);
pid = fork();
if (pid != 0)
{
dup2(pipefd[0], 0);
close(pipefd[1]);
execvp("grep", grep_args);
}
else
{
dup2(pipefd[1], 1);
close(pipefd[0]);
execvp("cat", cat_args);
}
}
यह खोल पर
cat file | grep search_word
कर के बराबर है।
शैल पाइप |
pipe(2)
और dup2(2)
सिस्टम कॉल का उपयोग करके कार्यान्वित किया गया है।
Unix Pipes देखें।
pipe(2)
syscall |
ऑपरेटर
|
साथ पाइपिंग के लिए गोले द्वारा प्रयोग किया जाता खोल के कार्यान्वयन, यह intenally pipe()
syscall का उपयोग करता है।
- 1. कोणीय 2 कस्टम पाइप में मूल पाइप का उपयोग करें
- 2. यूनिक्स पाइप एकाधिक लेखकों
- 3. पाइप
- 4. कांटा() और पाइप() सी
- 5. सी ब्लॉक पर यूनिक्स पाइप पढ़ने पर
- 6. पाइप
- 7. पाइप
- 8. पाइप
- 9. पाइप
- 10. पाइप
- 11. पाइप
- 12. पाइप
- 13. एक पाइप
- 14. पाइप
- 15. पाइप
- 16. पाइप
- 17. पाइप
- 18. पाइप
- 19. पाइप
- 20. पाइप
- 21. पाइप
- 22. कोणीय 2 तारीख पाइप
- 23. कोणीय 2 पाइप ट्रिगरिंग
- 24. कोणीय में मुद्रा पाइप 2
- 25. सी ++ पाइप नामक खिड़कियों का उपयोग
- 26. यूनिक्स का उपयोग करके एक साथ Node.js स्क्रिप्ट को पाइप कैसे करें | पाइप (कमांड लाइन पर)?
- 27. पाइप() और ग
- 28. पाइप कॉल और तुल्यकालन
- 29. कोणीय 2 यूनिट टेस्ट: कस्टम पाइप त्रुटि पाइप नहीं मिली
- 30. नामित पाइप क्या हैं?
डुप्लिकेट क्यों बनाए गए हैं? क्या हम डुप्लिकेट किए बिना डेटा लिख और पढ़ नहीं सकते? –
यह सभी माता-पिता-बाल प्रक्रिया संचार में कड़ाई से जरूरी नहीं है ('dup2()')। आप माता-पिता और बच्चे भी सीधे संवाद कर सकते हैं। उदाहरण के लिए, माता-पिता पाइप के लिखने के अंत में 'लिखना (2)' कर सकते हैं और बच्चे पढ़ने के अंत से '(2) 'पढ़ सकते हैं। –
@PsAkshay क्योंकि निष्पादित grep और cat केवल 0 और 1 से पढ़ते/लिखते हैं, न कि पाइपफ़ेड। –