آموزش‌های خط فرمانی

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

آموزش‌های خط فرمانی

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

NamedPipes


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

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

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

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

 cd /tmp
 mkfifo pipe1

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

 echo "hello" > pipe1

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

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

 cat /tmp/pipe1

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

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

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

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

ادامه مطلب

نظرات 0 + ارسال نظر
ایمیل شما بعد از ثبت نمایش داده نخواهد شد