منبع اصلی نوشتار زیر در این لینک قرار دارد

NamedPipes


کار با لوله‌های با نام

لوله‌ها امکان ارتباط پردازشها با یکدیگر را فراهم می‌کنند. همچنین لوله ممکن است به عنوان FIFO (اختصاری برای First In- First Out) شناخته شود.

برتری آنها از کاربرد فایلها به عنوان وسیله ارتباط، آن است که با استفاده از لوله‌ها، پردازش‌ها با یکدیگر همگام می‌شوند: اگر پردازشی از یک لوله نخواند، پردازش نوشتن در لوله مسدود می‌شود، و اگر نویسنده وجود نداشته باشد، پردازش خواندن از لوله، مسدود می‌شود.

مثال زیر نمونه‌ای از لوله نام‌گذاری شده است، در اینجا به عنوان pipe1 نامیده شده.

 cd /tmp
 mkfifo pipe1

برای ارسال یک پیغام به لوله، از این استفاده کنید:

 echo "hello" > pipe1

در این نقطه به نظر می‌رسد پردازش هنگ شده باشد. پردازش دیگری برای جمع‌آوری داده در حال اجرا نیست، بنابراین کرنل پردازش را به حالت تعلیق در می‌آورد. گفته می‌شود پردازش در این مرحله مسدود(blocked) گردیده است.

امکان دارد در ترمینال دیگری، اطلاعات از لوله جمع آوری گردد، به این شکل:

 cat /tmp/pipe1

اکنون توسط cat اطلاعات از لوله خوانده خواهد شد( و در ترمینال نوشته می‌شود)، و پردازش نویسندهِ مسدودشده برای ادامه یافتن آزاد می‌شود.

برای برخی اطلاعات بیشتر، پرسش و پاسخ شماره ۸۵ را ببینید.

مثال همگامی دوطرفه سرویس‌دهنده- سرویس‌گیرنده

این مثال کوچکی از مخابره کردن یک پردازش سرویس‌دهنده با یک پردازش سرویس‌گیرنده است. سرویس‌دهنده فرمانها را به سرویس‌گیرنده ارسال می‌کند، و سرویس گیرنده هر فرمان را تصدیق می‌کند:

ادامه مطلب



به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد