একটি ফাইল বর্ণনাকারী থেকে একটি ফাইল পয়েন্টার পেতে কিভাবে?


86

আমি প্রায় খেলছি mkstemp(), যা একটি ফাইল বর্ণনাকারী সরবরাহ করে তবে আমি এর মাধ্যমে ফর্ম্যাট আউটপুট উত্পন্ন করতে চাই fprintf()। ব্যবহারের জন্য উপযুক্ত এমন mkstemp()একটি FILE *কাঠামোয় সরবরাহ করা ফাইল বিবরণকারীকে কী রূপান্তর করার কোনও সহজ উপায় আছে fprintf()?


উত্তর:


103

ব্যবহার fdopen():


34
এবং ফাইল ফাইল থেকে ফাইলের বিবরণ পেতে * ব্যবহার করুন fileno(): linux.die.net/man/3/fileno
লি

4
যদি fdকিছু পতাকা (যেমন O_NONBLOCK) দিয়ে খোলা হয় - fdopenনতুন পতাকা দিয়ে এটি খোলার পরে তাদের কী হবে ? তারা xorএকসাথে-বিড বা প্রতিস্থাপিত করা হবে?
এক্সিলিটস

4
@jww: ফাইল বর্ণনাকারীরা এএনএসআই সি দিয়ে শুরু করবেন না।
রাফলেউইন্ড

4
fdopenএকাধিকবার কল করা কি কোনওভাবেই খারাপ ? (ধরে
নিলাম

4
@ এক্সিলিটস ফাইল * এর বিকল্পগুলি ইতিমধ্যে খোলা ফাইল বর্ণনাকারীর আওতায় থাকতে হবে। সুতরাং আপনি যদি কেবলমাত্র পঠন করে এফডি খোলেন এবং ফাইলটি কেবল লেখার সাথেই খোলা থাকে তবে এটি একটি ব্যতিক্রম ছুঁড়ে ফেলা উচিত। আরও তথ্যের জন্য আইবিএম
সাপোর্ট /

28

FILE* f = fdopen(d, "w");

ম্যান fdopen আউটপুট:

সাইনোপিসিস

fdopen()ফাংশন, বিদ্যমান ফাইল বর্ণনাকারী সঙ্গে একটি স্ট্রিম সহযোগীদের fildes। স্ট্রিমের মোড অবশ্যই ফাইল বর্ণনাকারীর মোডের সাথে সামঞ্জস্যপূর্ণ। যখন স্ট্রিমটি বন্ধ হয়ে যায় fclose(3), তখন fildesএটি বন্ধ হয়ে যায়।


4
এএনএসআই সি তে উপলব্ধ নয়
jwww

আরও স্পষ্টতার জন্য, আইবিএম
সাপোর্ট /

-8

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


17
"স্ট্যান্ডার্ড" বলতে আপনি কী বোঝাতে চান তার উপর নির্ভর করে। পসিক্স একটি মান।
রিচার্ড পেনিংটন

12
প্রশ্ন ছিল ফাইল বর্ণনাকারী সম্পর্কে। ;-)
রিচার্ড পেনিংটন

11
@ নীল> প্রশ্নটিকে সি হিসাবে ট্যাগ করার অর্থ এই নয় যে "সি স্ট্যান্ডার্ড সম্পর্কে আমাকে সম্পূর্ণ সত্য বলুন" বরং "আমি সিতে কোডিং করছি, আমি এটি করতে ব্যর্থ হয়েছি, দয়া করে বলুন এটি সম্ভব কিনা এবং কীভাবে?" "
গ্রেগরি পাকোস্জ

8
আমি সম্মত হই যে এটি করার কোনও মানক উপায় নেই, তবে ওপির উল্লেখটি mkstempসূচিত করে যে অ-মানক সমাধানগুলি এই বিশেষ পরিস্থিতিতে গ্রহণযোগ্য। সেক্ষেত্রে তার posixট্যাগটি যুক্ত করা উচিত ছিল (যা আমি দেখতে পাচ্ছি তখন থেকেই যুক্ত করা হয়েছিল)।
আমেরিকাল রোগুল

9
@ নীল, এবং নেট এবং জীবনের অর্থ। আপনি যদি আলাদা আলাদা মতামত বলে থাকেন তবে আপনি আরও বুদ্ধিমান হবেন। আমি সন্দেহ করি এসও সমস্ত মানের উপর চুল কাটা সম্পর্কে। এবং 23-এর খ্যাতি অনুসারে কোনও এসও-অভিজ্ঞতার সাথে কারও ট্যাগিং দক্ষতার উপর নির্ভর করা খুব ব্যবহারিক নয়
মাইকেল ক্রেলিন - হ্যাকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.