آموزش زبان C (قسمت سیزدهم:Pipe)

به صورت مفهومی، یک pipe ارتباط بین دوتا پردازنده را می گویند، به طوریکه یک خروجی استاندارد از یک پردازنده یک ورودی استاندارد برای پردازنده دیگر تلقی می شود. در سیستم های UNIX ، پایپ ها Pipe ها برای ارتباط بین دو پردازنده مفید هستند (در واقع برای ارتباطات داخلی پردازنده ها).

اما در مورد pipe ها چند نکته مهم است:

پایپ یا pipe یک ارتباط یکطرفه است یعنی در استفاده از پایپ یک پردازنده در پایپ می نویسد و پردازنده دیگر از پایپ آن را می خواند که در این مورد یک قسمتی از حافظه اصلی به عنوان فایل مجازی یا Virtual file به پایپ تخصیص داده می شود. و در این صورت یک پروسسور می تواند در این Virtual file بنویسد و پردازنده مرتبط دیگر از آنجا بخواند.

پایپ یا pipe می تواند توسط پردازنده ایجاد کننده و یا تمام پردازنده های فرزند (زیر پردازنده) برای خواندن و نوشتن استفاده شود. یک پروسسور می تواند در فایل مجازی بنویسد و یا پایپ کند اصطلاحا و پردازنده ی مرتبط دیگر می تواند از آن بخواند.

اگر یک پردازنده تلاش کند که بخواند قبل از اینکه چیزی درون پایپ نوشته شده باشد، این خواندن ممونع خواهد شد تا زمانیکه چیزی نوشته شود.

ساختار پایپ را در تصویر زیر می توانید ببینید.

همچنین سینتکس کد C برای پایپ در زیر آورده شده است:

int pipe(int fds[2]);
Parameters :
fd[0] will be the fd(file descriptor) for the 
read end of pipe.
fd[1] will be the fd for the write end of pipe.
Returns : 0 on Success.
-۱ on error.

رفتار پایپ بصورت FIFO است که FIFO مخفف عبارت First in First out می باشد در واقع یعنی الویت با دیتایی است که زودتر آمده است و تقدم و تاخر در دیتا مهم است. در واقع صف یا queue مهم است. همچنین در پایپ سایز خواندن و نوشتن با یکدیگر یکسان نیستند یعنی ما می توانیم در یک پایپ ۵۱۲ بایت بنویسیم و همزمان ۱ بایت فقط بخوانیم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...