سی زبان میں پائپ فنکشن کا استعمال کیسے کریں۔

How Use Pipe Function C Language



ایک پائپ عمل کے درمیان رابطے کا ایک ذریعہ ہے۔ ایک عمل پائپ کو ڈیٹا لکھتا ہے ، اور دوسرا عمل پائپ سے ڈیٹا پڑھتا ہے۔ اس آرٹیکل میں ، ہم دیکھیں گے کہ پائپ () فنکشن کس طرح C زبان کا استعمال کرتے ہوئے تصور کو نافذ کرنے کے لیے استعمال کیا جاتا ہے۔

پائپ کے بارے میں

پائپ میں ، ڈیٹا کو فیفو آرڈر میں برقرار رکھا جاتا ہے ، جس کا مطلب ہے پائپ کے ایک سرے کو ترتیب سے ڈیٹا لکھنا اور اسی ترتیب وار پائپ کے دوسرے سرے سے ڈیٹا پڑھنا۔







اگر کوئی عمل پائپ سے پڑھتا ہے ، لیکن کسی دوسرے عمل نے پائپ کو ابھی تک نہیں لکھا ہے ، تو فائل کے اختتام کو پڑھیں۔ اگر کوئی عمل کسی پائپ کو لکھنا چاہتا ہے ، لیکن پڑھنے کے لیے پائپ کے ساتھ کوئی دوسرا عمل منسلک نہیں ہے ، تو یہ ایک خرابی کی حالت ہے ، اور پائپ ایک SIGPIPE سگنل پیدا کرتا ہے۔



ہیڈر فائل۔

#شامل کریں

نحو۔



intپائپ(intدائر[])

دلائل۔

یہ فنکشن ایک دلیل لیتا ہے ، دو عدد کی ایک صف ( دائر ). فائلز [0] پائپ سے پڑھنے کے لیے استعمال کیا جاتا ہے ، اور فائلز [1] پائپ پر لکھنے کے لیے استعمال کیا جاتا ہے۔ وہ عمل جو پائپ سے پڑھنا چاہتا ہے بند ہونا چاہیے۔ فائلز [1] ، اور وہ عمل جو پائپ کو لکھنا چاہتا ہے بند ہونا چاہیے۔ فائلز [0] . اگر پائپ کے غیر ضروری سرے واضح طور پر بند نہیں ہوتے ہیں تو پھر فائل کا اختتام (EOF) کبھی واپس نہیں کیا جائے گا۔





اقدار واپس کریں۔

کامیابی پر ، پائپ () 0 واپس کرتا ہے ، ناکامی کے لیے فنکشن ریٹرن -1۔

تصویر کے لحاظ سے ، ہم نمائندگی کر سکتے ہیں۔ پائپ () فنکشن مندرجہ ذیل ہے:



ذیل میں چند مثالیں دی گئی ہیں جو پائپ فنکشن کو C زبان میں استعمال کرنے کا طریقہ بتاتی ہیں۔

مثال 1۔

اس مثال میں ، ہم دیکھیں گے کہ پائپ کا فنکشن کیسے کام کرتا ہے۔ اگرچہ ایک عمل میں پائپ کا استعمال بہت مفید نہیں ہے ، لیکن ہمیں ایک آئیڈیا ملے گا۔

// مثال 1. سی
#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں

intمرکزی()
{
intn؛
intدائر[]؛
چاربفر[1025۔]؛
چار *پیغام= 'ہیلو ، ورلڈ!'؛

پائپ(دائر)؛
لکھیں(دائر[]،پیغام، سٹرلین (پیغام))؛

اگر ((n=پڑھیں(دائر[]،بفر، 1024۔ ) ) > = ) {
بفر[n] = ؛ // تار ختم کریں۔
پرنٹ ایف ('پائپ سے٪ d بائٹس پڑھیں:'٪s'n'،n،بفر)؛
}
اور
خوف ('پڑھیں')؛
باہر نکلیں ()؛
}

یہاں ہم نے پہلے استعمال کرتے ہوئے ایک پائپ بنایا ہے۔ پائپ () فنکشن پھر پائپ کو استعمال کرتے ہوئے لکھا گیا۔ ہاتھی دانت [1] ختم پھر ، پائپ کے دوسرے سرے کا استعمال کرتے ہوئے ڈیٹا پڑھا گیا ہے ، جو کہ ہے۔ فائلز [0] . فائل کو پڑھنے اور لکھنے کے لیے ہم استعمال کرتے تھے۔ پڑھیں () اور لکھیں () افعال.

مثال 2۔

اس مثال میں ، ہم دیکھیں گے کہ کس طرح والدین اور بچے کے عمل پائپ کا استعمال کرتے ہوئے بات چیت کرتے ہیں۔

// مثال 2. سی
#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں
#شامل کریں

intمرکزی()
{
intدائر[]،nbytes؛
pid_t childpid؛
چارتار[] = 'ہیلو ، دنیا!n'؛
چارریڈ بفر[80۔]؛

پائپ(دائر)؛

اگر((بچہ=کانٹا()) == -)
{
خوف ('کانٹا')؛
باہر نکلیں ()؛
}

اگر(بچہ== )
{
بند کریں(دائر[])؛// بچے کے عمل کو پائپ کے اس سرے کی ضرورت نہیں ہے۔

/ * پائپ کے آؤٹ پٹ سائیڈ کے ذریعے 'سٹرنگ' بھیجیں */
لکھیں(دائر[]،تار، ( سٹرلین (تار)+))؛
باہر نکلیں ()؛
}
اور
{
/ * والدین کا عمل پائپ کے آؤٹ پٹ سائیڈ کو بند کر دیتا ہے */
بند کریں(دائر[])؛// والدین کے عمل کو پائپ کے اس سرے کی ضرورت نہیں ہے۔

/ * پائپ سے تار میں پڑھیں */
nbytes=پڑھیں(دائر[]،ریڈ بفر، کا سائز(ریڈ بفر))؛
پرنٹ ایف ('سٹرنگ پڑھیں:٪ s'،ریڈ بفر)؛
}

واپسی()؛
}

سب سے پہلے ، پائپ فنکشن کا استعمال کرتے ہوئے ایک پائپ بنایا گیا ہے پھر بچے کے عمل کو کانٹا لگا دیا گیا ہے۔ پھر ، بچہ عمل پڑھنے کے اختتام کو بند کرتا ہے اور پائپ کو لکھتا ہے۔ والدین کا عمل لکھنے کے اختتام کو بند کرتا ہے اور پائپ سے پڑھتا ہے اور اسے دکھاتا ہے۔ یہاں ڈیٹا کا بہاؤ صرف ایک طریقہ ہے جو بچے سے والدین تک ہے۔

نتیجہ:

پائپ () لینکس میں ایک طاقتور سسٹم کال ہے۔ اس آرٹیکل میں ، ہم نے صرف ایک طرفہ ڈیٹا بہاؤ دیکھا ہے ، ایک عمل لکھتا ہے ، اور دوسرا عمل پڑھتا ہے ، دو پائپ بناتے ہوئے ہم دو طرفہ ڈیٹا بہاؤ بھی حاصل کر سکتے ہیں۔