দুটি উইন্ডো, একই ব্যবহারকারী, বাশ প্রম্পট সহ। উইন্ডো -১ প্রকারে:
$ mkfifo f; exec <f
সুতরাং বাশ এখন ফাইল বর্ণনাকারী 0 থেকে পড়ার চেষ্টা করছে, যা নামযুক্ত পাইপে ম্যাপ করা হয়েছে f
। উইন্ডো -2 টাইপ করুন:
$ echo ls > f
এখন উইন্ডো -1 একটি এলএস প্রিন্ট করে এবং তখন শেলটি মারা যায়। কেন?
পরবর্তী পরীক্ষা: উইন্ডো -১ টি আবার খুলুন exec <f
। উইন্ডো -2 টাইপ করুন:
$ exec 3>f
$ echo ls >&3
উপরের প্রথম লাইনের পরে, উইন্ডো -1 উঠে এবং একটি প্রম্পট মুদ্রণ করবে। কেন? উপরের দ্বিতীয় লাইনের পরে, উইন্ডো -1 ls
আউটপুট মুদ্রণ করে এবং শেলটি জীবিত থাকে। কেন? আসলে, এখন উইন্ডো -2 এ, echo ls > f
উইন্ডো -1 শেলটি বন্ধ করে না।
উত্তরটি অবশ্যই উইন্ডো -2 থেকে ফাইলের বর্ণনাকারী 3 এর অস্তিত্বের সাথে নামযুক্ত পাইপটি উল্লেখ করতে হবে ?!
exec 3>f
চালানো হলে প্রথম শেলটি একটি প্রম্পট দেয়। (মাইনর পয়েন্ট, আপনার মন্তব্যে কি " লিখিত মোডে"
exec <f
,bash
প্রয়াস নয় পড়া থেকেf
, এটা প্রথম প্রয়াস করছে খুলতে করুন।open()
কিছু পাইপ থেকে লেখার মোডে অন্য খোলা (যা এ নির্দেশ নল instantiated করা হবে, এবং শেল তা থেকে ইনপুট পড়তে হবে) করছেন প্রক্রিয়া আছে না হওয়া অবধি ফিরবে করা হবে না।