Pipe এম কেএনওডি` দ্বারা তৈরি নামক পাইপ এবং `এমকিফাইফো` দ্বারা নির্মিত ফিফো সমতুল্য?


22

আমি mkfifo <file>নামকরণকৃত FIFOs তৈরি করতে কমান্ডটি ব্যবহার করেছি , যেখানে একটি প্রক্রিয়া ফাইলটিতে লিখিত হয় এবং অন্য প্রক্রিয়াটি ফাইল থেকে পড়ে reads

এখন, আমি জানি mknodকমান্ডটি নামযুক্ত পাইপ তৈরি করতে সক্ষম। এই নামক পাইপগুলি mkfifoকি তৈরি করা ফিফগুলির সমতুল্য , বা তাদের আলাদা বৈশিষ্ট্য রয়েছে?

উত্তর:


29

হ্যাঁ, এটি সমতুল্য, তবে স্পষ্টতই কেবল যদি আপনি mknodআসলে কোনও ফিফো তৈরি করতে বলেন, এবং কোনও ব্লক বা চরিত্রের ডিভাইস নয় (এই দিনগুলিতে ডেডটিএমপিএস / ইউদেব আপনার পক্ষে করে থাকে) rarely

mkfifo foobar
# same difference
mknod foobar p

ইন straceএটি উভয় কমান্ডের জন্য অভিন্ন আছে:

mknod("foobar", S_IFIFO|0666)           = 0

সিস্কলগুলির ক্ষেত্রে, mkfifoআসলে শর্টহ্যান্ডের জন্য mknod।

সবচেয়ে বড় পার্থক্য, তারপর, শব্দার্থবিজ্ঞান মধ্যে। এর সাহায্যে mkfifoআপনি একসাথে একগুচ্ছ ফিফও তৈরি করতে পারেন:

mkfifo a b c

সহ mknod, যেহেতু আপনাকে প্রকারটি নির্দিষ্ট করতে হবে, এটি কেবল কখনও একটি যুক্তি গ্রহণ করে:

# wrong:
$ mknod a b c p
mknod: invalid major device number ‘c’
# right:
mknod a p
mknod b p
mknod c p

সাধারণভাবে, mknodসঠিকভাবে ব্যবহার করা কঠিন হতে পারে। তাই আপনি যদি ফিফোর সাথে কাজ করতে চান তবে দৃ stick় থাকুন mkfifo।


16
যদিও ওপি অবশ্যই পাত্তা দিচ্ছে না, যেহেতু কিউ ট্যাগ করা হয়নি [লিনাক্স], লক্ষ্য করুন যে বিএসডি তে mkfifo(2) আসলেই একটি পৃথক সিস্টেম কল mknod(2)(তবে এটি ঠিক একই জিনিসটি শেষ করবে mknod(S_FIFO))।
— 28:30

@ ফ্রসচুটজ - একটি দুর্দান্ত উত্তরের জন্য আপনাকে ধন্যবাদ। সুতরাং শুধু বিষয় স্পষ্ট করতে। mkfifoএবং mknodপ্রকৃতপক্ষে mknodএকটি ফিফো তৈরি করতে সিস্টেম কল (আজকের আগে সেই সিস্টেম কলটি জানত না) ব্যবহার করে প্রোগ্রামগুলি । আপনি "FIFO" এবং "নামকরণ" শব্দটি বিনিময়যোগ্যভাবে ব্যবহার করেন, আমার ধারণা। তারা একই জিনিস? দ্বি-দিক নির্দেশিত পাইপগুলি ইউনিক্স ডোমেন সকেটের মাধ্যমে প্রয়োগ করা হয়, তাই না?
— শুযেং

হ্যাঁ, "নামযুক্ত পাইপ" এবং ফিফো সাধারণত একই জিনিসটিকে বোঝায় (পাইপের প্রসঙ্গে - ফিফো একটি ধারণা যা পাইপের বাইরেও বিদ্যমান)। একটি সকেট পুরোপুরি আলাদা জন্তু, এর কিছু আকর্ষণীয় উত্তর এখানে: unix.stackexchange.com/q/75904/30851
— frostschutz

@ ফ্রসচুটজ - আপনাকে ধন্যবাদ আমি অনুমান করি যে আমাকে সবচেয়ে বেশি বিভ্রান্ত করেছে তা হল, যখন আমি নামযুক্ত পাইপগুলি সম্পর্কে চিন্তা করি, তখন আমি দ্বি-দিকীয় পাইপগুলিও ভাবি - এবং একটি ফিফো অবশ্যই দ্বি-দিকনির্দেশক নয় (এএফএআইকি)।
— শুজেং

@ শুজংয়ের একটি ফিফোর নির্দেশনার বিষয়ে কোনও নিয়ম নেই। এটা সত্যিই শুধু পড়া এবং লিখুন। পাঠক এবং লেখক যে কোনও সংখ্যা থাকতে পারে, তবে লিখিত কিছু কেবল একবার পড়তে পারে, সুতরাং শেষ পর্যন্ত কে এই তথ্যটি পাবে তা স্পষ্ট নয়।
— frostschutz

18

তারা বহনযোগ্যতার চরম প্রান্ত ব্যতীত সমতুল্য। mknod ... pনামযুক্ত পাইপগুলি তৈরির একমাত্র উপায় ছিল, তবে পসিক্স এটিকে বাদ দিয়ে তার mkfifoপরিবর্তে উদ্ভাবন করা বেছে নিয়েছিল , সম্ভবত নামকরণ করা পাইপগুলি mknodডিভাইস এবং তাদের বড় এবং ছোটখাট সংখ্যার সাথে অন্যান্য স্টাফগুলি যেভাবে করতে পারে তার চেয়ে স্বভাবগতভাবে আরও বহনযোগ্য ধারণা । mknodসিস্টেম কল এছাড়াও POSIX প্রথম verions এর থেকে বাদ দেন।

সুতরাং, প্রাচীন ইউনিক্সের বহনযোগ্যতার জন্য mknod ... pআরও ভাল। আধুনিক সিস্টেমগুলির জন্য, mkfifoকিছুটা ভাল, যদিও এটি এমন কোনও সম্ভাবনা নয় যে আপনি এমন একটি প্রকৃত আধুনিক ইউনিক্স পাবেন যেখানে mknod ... pকাজ করে না।

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