ফাইল বর্ণনাকারী বনাম ফাইলের নাম


12

আমি ভাবছিলাম ফাইল বর্ণনাকারী এবং ফাইলের নামগুলির মধ্যে পার্থক্য এবং সম্পর্কগুলি কী। এগুলি কি সমস্ত ফাইল অ্যাক্সেস করতে ব্যবহৃত হয়? যদি হ্যাঁ, একইভাবে?

উদাহরণস্বরূপ, /dev/fd/0, /dev/stdin, এবং /proc/self/fd/0সব লিঙ্ক আছে /dev/pts/2। এই চারটি ফাইল বর্ণনাকারী, বা ফাইলের নাম?


উত্তর:


12

চারটি /dev/fd/0, /dev/stdin, /proc/self/fd/0এবং /dev/pts/2ফাইলের নাম হয়, হিসাবে /////dev/../dev/fd//0, /bin/sh, /etc/fstab, /fioejfoeijf, ইত্যাদি সকল কিন্তু যে শেষ উদাহরণ আপনার মেশিনে একটি বিদ্যমান ফাইল নাম হতে করার সম্ভাবনা বেশি। একটি ফাইলের নাম এমন একটি স্ট্রিং যা আপনার ফাইল সিস্টেমে কোনও ফাইলকে মনোনীত করতে পারে; লিনাক্সের অধীনে, এমন কোনও স্ট্রিং যাতে নাল বাইট থাকে না এবং এটি প্রায় 4096 বাইট দীর্ঘ হয় একটি বৈধ ফাইলের নাম। এই নামগুলি অনেক সমতুল্য, যেমন হয় /bin/shহয় সমতুল্য ///bin/sh, /bin/../bin/sh(অভিমানী /binএকটি বিদ্যমান ডিরেক্টরী হয়) ইত্যাদি সকল উদাহরণ আমি দিয়েছি এতদূর পরম ফাইলের নাম আছে; আপেক্ষিক ফাইলের নামও রয়েছে, যা একটি দিয়ে শুরু হয় না /এবং যার অর্থ বর্তমান ডিরেক্টরিতে নির্ভর করে।

ফাইলের নামগুলির আশেপাশের পরিভাষা সর্বজনীন নয়; কখনও কখনও "ফাইলের নাম" অর্থ কোনও ফাইলের পুরো পথ, এবং কখনও কখনও এর অর্থ ডিরেক্টরি প্রবেশের নাম। POSIX পরিভাষাটি ডিরেক্টরি ফাইলের প্রবেশের নামের জন্য " ফাইলের নাম " বা " পথের নাম উপাদান " এবং একটি পুরো পথের জন্য "পথের নাম "।

একটি ফাইল বর্ণনাকারী একটি নির্দিষ্ট প্রক্রিয়াতে একটি খোলার ফাইল ডিজাইন করে। কার্নেল প্রতিটি প্রক্রিয়াটির জন্য ফাইল বর্ণনাকারীর একটি সারণী বজায় রাখে। ফাইল বর্ণনাকারী সারণীতে প্রতিটি এন্ট্রি নির্দেশ করে যে প্রক্রিয়াটি যদি ফাইল বর্ণনাকারীতে পড়া, লেখার এবং অন্যান্য ক্রিয়াকলাপের জন্য অনুরোধ করে তবে কী করবেন।

ফাইল বর্ণনাকারীরা কোনও ফাইলের সাথে মিল থাকতে পারে এবং এর একটি যুক্ত নাম থাকতে পারে, তবে তাদের সবকটিই তা করে না। যাঁরা করেন, তাদের জন্য ফাইলটি নিয়মিত ফাইল, ডিরেক্টরি, একটি ডিভাইস ফাইল বা একটি নামক পাইপ (এফআইএফওও বলা হয়) হতে পারে (তৈরির ধরণ mkfifo); কিছু সিস্টেমে আরও সম্ভাবনা রয়েছে যেমন ইউনিক্স সকেট এবং দরজা। ফাইল বর্ণনাকারীর উদাহরণগুলির সাথে সম্পর্কিত নামযুক্ত ফাইল নেই পাইপগুলি (ধরণের তৈরির ধরণ pipe) এবং নেটওয়ার্কিং সকেট অন্তর্ভুক্ত

/dev/fd/0, /dev/stdinএবং /proc/self/fd/0একটি অদ্ভুত অর্থ সহ ফাইলের নাম (সমস্ত সমতুল্য): ফাইলগুলি বর্তমানে ফাইল বর্ণনাকারী দ্বারা যে কোনও ফাইল অ্যাক্সেস করা যায় তা নির্ধারণ করে 0. বর্ননাকারী। এই ফাইলগুলির যে কোনওটি খোলার কল করার সমতুল্য dup(0)। নামযুক্ত ফাইলগুলি নতুন ফাইল খোলার পরিবর্তে অপ্রত্যাশিতভাবে এর ইতিমধ্যে খোলা ফাইলগুলির একটি ব্যবহার করার প্রক্রিয়া পাওয়ার উপায়; এগুলি বেশিরভাগই কোনও প্রোগ্রামের কমান্ড লাইনে পাস করার জন্য দরকারী, যেখানে প্রোগ্রামটি কোনও ফাইলের নাম খোলার প্রত্যাশা করে।


@ গাইলস আপনি লিখেছেন "ফাইল বর্ণনাকারী টেবিলের প্রতিটি এন্ট্রি নির্দেশ করে যে প্রক্রিয়াটি ফাইল বিবরণকারীটিতে পড়ার, লেখার এবং অন্যান্য ক্রিয়াকলাপের জন্য অনুরোধ জানায় what " ( জোর আমার)। যতদূর আমি বুঝতে পেরেছি এটি স্ট্যান্ডিন, স্টাডআউট এবং স্ট্ডার যথাক্রমে স্ট্যান্ডার্ড 0,1,2 ইত্যাদির মতো একটি পূর্ণসংখ্যা মাত্র। এটি নিয়মিত ফাইলগুলির জন্য উচ্চ মানের সংখ্যা হবে। আমি আপনার মন্তব্যে যা পাচ্ছি না তা এই সংখ্যাটি কীভাবে নির্দেশ করে "যদি প্রক্রিয়াটি ফাইল বর্ণনাকারীতে পড়া, লেখার এবং অন্যান্য ক্রিয়াকলাপের অনুরোধ করে তবে কী করতে হবে"। । আপনি কি দয়া করে এটি একটু বাড়িয়ে দিতে পারেন?
গীক

@ গীক ফাইল বর্ণনাকারী সারণীতে একটি এন্ট্রি কোনও সংখ্যা নয়। নম্বরটি সেই টেবিলের সূচক।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

@ গাইলস আমার ভুল বোঝাবুঝি পরিষ্কার করার জন্য ধন্যবাদ। আমি এখন এটি আরও ভাল বুঝতে। সুতরাং আপনি দয়া করে আপনার উত্তরের অংশ "কী করবেন" এর একটি উদাহরণ দিতে পারেন। আমি একত্রিত হয়েছি যে ফাইল বর্ণনাকারী সারণীতে প্রতিটি এন্ট্রিগুলিতে আবার একটি ফাইল টেবিলের পয়েন্টার থাকে যার মধ্যে ফাইল অফসেট, ফাইলের স্থিতি ইত্যাদির মতো তথ্য থাকে তবে আমি আপনার উত্তরের "কী করব" অংশ সম্পর্কে এখনও পরিষ্কার নই।
গিখ

2

ফাইল নাম ফাইল ফাইল সিস্টেমের ফাইলের একটি নাম, এর চেয়ে বেশি কিছুই নয় - এটি কেবল একটি স্ট্রিং।

ফাইল বর্ণনাকারী হ'ল এক ধরণের অবজেক্ট, যেখান থেকে আপনি পড়তে এবং / অথবা লিখতে পারেন। এটি ওপেন এবং ফাইল প্রস্তুত। কেবলমাত্র ফাইল বর্ণনাকারী নেই - স্টিডিন, স্টডআউট এবং স্ট্ডার এছাড়াও বর্ণনাকারী, আপনি ফাইলগুলির সাথে একেবারে একই ফাংশনগুলি ব্যবহার করে সেগুলি থেকে লিখতে বা পড়তে পারেন (আপনি উদাহরণস্বরূপ সন্ধান করতে পারেন না)। ফাইল নয় এমন বর্ণনাকারীর অন্যান্য উদাহরণগুলি: নামযুক্ত পাইপ এবং নেটওয়ার্ক সকেট।

কোডে ফাইল ডেস্ক্রিপ্টর একটি পরিবর্তনশীল, কার্নেলের কোনও কিছুর প্রতি নির্দেশক, যা ফাইল অবজেক্টকে প্রতিনিধিত্ব করে।

উদাহরণস্বরূপ, / dev / fd / 0, / dev / stdin, / proc / self / fd / 0 সবগুলি / dev / pts / 2 এর লিঙ্ক। এই চারটি ফাইল বর্ণনাকারী, বা ফাইলের নাম?

এগুলি হ'ল সিউডো-ফাইল, যা কিছু স্ক্রিপ্ট বা প্রোগ্রামগুলির জন্য কার্যকর হতে পারে। আপনি এগুলি খুলতে এবং খুলতে () আপনাকে কোনও ফাইল বর্ণনাকারী ফিরিয়ে আনবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.