ইউনিক্সে, বেশিরভাগ অবজেক্টস আপনি পড়তে এবং লিখতে পারবেন - সাধারণ ফাইল, পাইপ, টার্মিনাল, কাঁচা ডিস্ক ড্রাইভ - সবই ফাইলের অনুরূপ হিসাবে তৈরি to
এর মতো একটি আদর্শ প্রোগ্রাম cat
এর স্ট্যান্ডার্ড ইনপুট থেকে এটি পড়ে:
n = read(0, buffer, 512);
যা 512 বাইটের জন্য জিজ্ঞাসা করে। n
আসলে পড়া বাইটের সংখ্যা বা কোনও ত্রুটি থাকলে -1 হয়।
আপনি যদি কোনও সাধারণ ফাইল দিয়ে বারবার এটি করেন, আপনি 512-বাইট পঠনগুলির একটি গুচ্ছ পাবেন, তারপরে ফাইলটির লেজ প্রান্তে কিছুটা সংক্ষিপ্ত পড়তে হবে, তারপরে 0 আপনি যদি ফাইলটির শেষটি পড়ার চেষ্টা করেছিলেন। সুতরাং, <= 0 cat
অবধি চলবে n
।
টার্মিনাল থেকে পড়া কিছুটা আলাদা। আপনি একটি লাইন টাইপ করার পরে, Enterকী দ্বারা সমাপ্ত হয়ে , read
ঠিক সেই লাইনে ফিরে আসে।
আপনি টাইপ করতে পারেন এমন কয়েকটি বিশেষ অক্ষর রয়েছে। এক Ctrl-D। আপনি যখন এটি টাইপ করেন, অপারেটিং সিস্টেমটি আপনার টাইপ করা সমস্ত বর্তমান লাইনের পাঠায় (যা Ctrl-Dনিজে নয়) পাঠায় । এবং এখানে Serendipitous জিনিসটি Ctrl-Dহ'ল : লাইনটির প্রথম অক্ষরটি হলে প্রোগ্রামটিকে দৈর্ঘ্যের 0 টি লাইন প্রেরণ করা হয় - ঠিক ঠিক তেমন প্রোগ্রামটি দেখতে পাবে যে এটি কোনও সাধারণ ফাইলের শেষে এসে গেছে কিনা। এটি কোনও সাধারণ ফাইল বা টার্মিনাল থেকে পড়া হোক না কেন, cat
আলাদাভাবে কিছু করার দরকার নেই ।
আর একটি বিশেষ চরিত্র Ctrl-Z। আপনি যখন এটি লাইনের যে কোনও জায়গায় টাইপ করেন, অপারেটিং সিস্টেম সেই পয়েন্ট অবধি আপনার টাইপ করা যা কিছু তা বাতিল করে দেয় এবং প্রোগ্রামে একটি SIGTSTP সিগন্যাল প্রেরণ করে, যা সাধারণত এটি থামায় (বিরতি দেয়) এবং শেলের নিয়ন্ত্রণ ফিরে দেয়।
সুতরাং আপনার উদাহরণে
$ cat > file.txt
pa bam pshhh<Ctrl+Z>
[2]+ Stopped cat > file.txt
আপনি কিছু অক্ষর টাইপ করেছেন যা ফেলে দেওয়া হয়েছিল, তারপরে cat
তার আউটপুট ফাইলে কিছু না লিখেই থামিয়ে দেওয়া হয়েছিল।
$ cat > file.txt
pa bam pshhh
<Ctrl+Z>
[2]+ Stopped cat > file.txt
আপনি একটি লাইনে টাইপ করেছেন, যা cat
এর আউটপুট ফাইলটিতে পড়ে এবং লিখেছিল এবং তারপরে Ctrl-Zবন্ধ হয়ে গেছে cat
।