অগ্রগতি প্রতিবেদন / লগিং তথ্য stderr বা stdout অন্তর্ভুক্ত?


75

অগ্রগতি প্রতিবেদন এবং লগিংয়ের তথ্য ("ডু ফু; ফু করানো" এর মতো জিনিস) মুদ্রণ করা উচিত সে সম্পর্কিত কোনও অফিসিয়াল পসিক্স, জিএনইউ, বা অন্য গাইডলাইন রয়েছে? ব্যক্তিগতভাবে, আমি এগুলি stderr এ লেখার প্রবণতা রাখি যাতে আমি stdout পুনর্নির্দেশ করতে পারি এবং কেবল প্রোগ্রামটির আসল আউটপুট পেতে পারি। আমাকে সম্প্রতি বলা হয়েছিল যে এটি ভাল অনুশীলন নয় যেহেতু অগ্রগতি প্রতিবেদনগুলি আসলে ত্রুটি নয় এবং কেবল ত্রুটি বার্তাগুলি স্টার্ডারে মুদ্রিত করা উচিত।

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

আমাদের কয়েকটি অনুরূপ প্রশ্ন রয়েছে তবে তারা এই সঠিক সমস্যাটির দিকে নজর দেয় না:

সুতরাং, অগ্রগতি প্রতিবেদন এবং অন্যান্য তথ্যমূলক বার্তাগুলি (যা প্রোগ্রামটির আসল আউটপুট অংশ নয়) মুদ্রণ করা উচিত সেখানে কোনও অফিসিয়াল বিধি রয়েছে?


26
মুদ্রণ স্পিনার এবং stdoutফলাফল একসাথে পছন্দ ফলাফল অকেজো করার একটি নিরাপদ উপায়। আপনার যদি ফলাফলগুলি অন্য কোনও প্রোগ্রামে পাইপ করা দরকার হয় তবে প্রোগ্রামটি স্পিনারদের থেকে ফলাফলগুলি পৃথক করতে হবে said এছাড়াও, আপনি যদি কোনও ফাইলে আউটপুট পুনর্নির্দেশ করেন তবে আপনি স্পিনারদের দেখতে সক্ষম হবেন না। এই প্রোগ্রামটিতে।
স্যাটা ক্যাটসুরা

2
@ স্যাটোক্যাটসুর হ্যাঁ, এটিও আমার মতামত এবং সে কারণেই আমি স্ট্রডারকে এই জাতীয় মুদ্রণ করি। তবে আমি যে প্রতিষ্ঠানের জন্য কাজ করি তার সিটিও মনে করে যে স্ট্যাডারকে মুদ্রণ করা কিছু ভুল হয়ে যাওয়ার ইঙ্গিত দেয়। আমি বরং বরং সাহসী দাবি করেছিলাম যে পসেক্স ওয়ে® স্টাডারকে মুদ্রণ করছে এবং তিনি আমাকে এতে ডেকেছিলেন। আমার উপর তার 20 টি বিচিত্র বছরের অভিজ্ঞতা রয়েছে তা দেখে, আমি দেখতে চাই যে আমি কোনও ধরণের "অফিসিয়াল" গাইডলাইন পাই কিনা।
টেরডন

সাতো ক্যাটসুরা বলেছিলেন, stdoutস্পিনিং এবং অন্যান্য তথ্যমূলক বার্তাগুলি ছাঁটাই করার জন্য এটি একটি নিরাপদ এবং সঠিক উপায়, তবে অনেক প্রোগ্রামারই বলে থাকেন যে 'নীরবতা সোনার। সবকিছু ঠিক থাকলে আউটপুট কিছুই না। ' তাই আসলে, দ্বারা stderr সবসময় যে অস্পষ্ট সংজ্ঞা কারণে করতে sequence.for নল ভঙ্গ করতে পারে ব্যবহার করা হয় এবং এছাড়াও stdout- এ হয় সরকারী নির্দেশিকা
Ven Se থেকে

6
@ তবুও আমি মনে করি আপনি ভুল বুঝেছেন; সাতো বলছেন যে স্টাডাউট ব্যবহার অনিরাপদ ("ফলাফলগুলি অকেজো করার নিরাপদ উপায়")।
স্টিফেন কিট

1
একটি সম্ভাব্য এক-আকারের ফিটস-সমস্ত সমাধানটি শুধুমাত্র stderrত্রুটি বার্তাগুলির প্রতিবেদন করতে ব্যবহার করা হবে, যখন কোনও --verboseপতাকা ব্যবহার করা হয় কেবল ব্যতীত , যেখানে অগ্রগতি প্রতিবেদনগুলিও অন্তর্ভুক্ত থাকে।
গৌরব

উত্তর:


27

পিক্সিকস স্ট্যান্ডার্ড স্ট্রিমগুলি এভাবে সংজ্ঞায়িত করে :

প্রোগ্রামের শুরুতে, তিনটি স্ট্রিম পূর্বনির্ধারিত হবে এবং স্পষ্টভাবে এটি খোলার দরকার নেই: স্ট্যান্ডার্ড ইনপুট (প্রচলিত ইনপুট পড়ার জন্য), স্ট্যান্ডার্ড আউটপুট (প্রচলিত আউটপুট লেখার জন্য), এবং স্ট্যান্ডার্ড ত্রুটি (ডায়াগনস্টিক আউটপুট লেখার জন্য)। খোলার সময়, স্ট্যান্ডার্ড ত্রুটির স্ট্রিমটি পুরোপুরি বাফার হয় না; স্ট্যান্ডার্ড কোনও ইন্টারেক্টিভ ডিভাইসকে উল্লেখ না করার জন্য যদি স্ট্রিমটি নির্ধারণ করা যায় তবে স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট স্ট্রিমগুলি পুরোপুরি বাফার হয়।

GNU C লাইব্রেরি একভাবে মান স্ট্রিম বর্ণনা

পরিবর্তনশীল: ফাইল * স্ট্ডআউট
স্ট্যান্ডার্ড আউটপুট স্ট্রিম, যা প্রোগ্রাম থেকে সাধারণ আউটপুট জন্য ব্যবহৃত হয়।

পরিবর্তনশীল: ফাইল * স্ট্ডার
স্ট্যান্ডার্ড ত্রুটি স্ট্রিম, যা ত্রুটি বার্তাগুলি এবং প্রোগ্রাম দ্বারা ইস্যু করা ডায়াগনস্টিকের জন্য ব্যবহৃত হয়।

সুতরাং, "প্রচলিত / সাধারণ আউটপুট" এবং "ডায়গনিস্টিক / ত্রুটি আউটপুট" এর বাইরে স্ট্রিম ব্যবহারের জন্য স্ট্যান্ডার্ড সংজ্ঞাগুলির কাছে খুব কম গাইডেন্স রয়েছে practice অনুশীলনে, উভয় প্রবাহকেই ফাইল এবং পাইপলাইনগুলিতে পুনঃনির্দেশ করা সাধারণ, যেখানে অগ্রগতি সূচকগুলি সমস্যা হয়ে উঠবে । কিছু সিস্টেম এমনকি আউটপুট জন্য নজরদারি stderr এবং এটি সমস্যার লক্ষণ হিসাবে বিবেচনা করে। নিখুঁত সহায়ক অগ্রগতির তথ্য উভয় প্রবাহে সমস্যাযুক্ত।

উভয় প্রমিত স্ট্রিমকে নিঃশর্ত অগ্রগতি সূচক প্রেরণের পরিবর্তে , এটি চিনতে গুরুত্বপূর্ণ যে অগ্রগতি আউটপুট কেবল ইন্টারেক্টিভ স্ট্রিমগুলির জন্য উপযুক্ত । এই বিষয়টি মনে রেখে, আমি কেবল স্ট্রিমটি ইন্টারেক্টিভ (যেমন, সহ isatty()) বা কমান্ড-লাইন বিকল্পের দ্বারা স্পষ্টভাবে সক্ষম হয়েছি কিনা তা খতিয়ে দেখার পরে অগ্রগতি কাউন্টারগুলি লেখার পরামর্শ দিই । এটি বিশেষত অগ্রগতির মিটারগুলির জন্য গুরুত্বপূর্ণ যা%-কমপ্লিট বারগুলির মতো টার্মিনাল আপডেট আচরণের উপর নির্ভর করে।

কিছু খুব সাধারণ অগ্রগতি বার্তাগুলির জন্য ("এক্স এক্স শুরু ..." এক্স দিয়ে শেষ ") এমনকি অ ইন্টারঅ্যাক্টিভ স্ট্রিমগুলির জন্য আউটপুট অন্তর্ভুক্ত করা আরও যুক্তিসঙ্গত। সেক্ষেত্রে ব্যবহারকারীরা কীভাবে স্ট্রিমগুলির সাথে ইন্টারেক্ট করতে পারে তা বিবেচনা করুন grepবা এর সাথে অনুসন্ধান করা বা পেজিং করা lessবা মনিটরিংয়ের মতো tail -f। যদি এই প্রসঙ্গে প্রগতি বার্তাগুলি অনুধাবন করা বোধগম্য হয় তবে সেগুলি থেকে গ্রাস করা আরও সহজ হবে stdout


ধন্যবাদ, জিএনইউ গাইডলাইনটি আমার পরে ধরণের জিনিস। তবে আমি বুঝতে পারি আমার প্রশ্নটি কিছুটা বিভ্রান্তিকর ছিল। আমি যখন উল্লেখিত "রিপোর্ট অগ্রগতি" আমি মত উভয় জিনিস চিন্তা ছিল N% doneমত এবং কিছু doing fooএবং foo done। পরেরটি সর্বদা রাখতে হবে যেহেতু কোনও ফাইলে পুনর্নির্দেশের সময় সেগুলি ডিবাগিংয়ের জন্য ব্যবহৃত হয়। সুতরাং আপনার স্ট্রিমটি ইন্টারেক্টিভ কিনা তা যাচাইয়ের পরামর্শটি প্রযোজ্য নয় (যদিও এটি খুব ভাল ধারণা)।
টেরডন

আহ স্পষ্টির জন্য ধন্যবাদ, এটি আপনি যেমন "% সম্পূর্ণ" এবং হ্যাশ-চিহ্নের অগ্রগতি বারের মতো যা আপনার পছন্দ মতো সফ্টওয়্যার এ দেখায় curlএবং তার থেকে কিছুটা আলাদা yum। সেক্ষেত্রে, আমি কিনা এবং কিভাবে ব্যবহারকারী মাধ্যমে আউটপুট সাথে যোগাযোগ করার জন্য চাই মনে হবে grepবা lessবা অনুরূপ সরঞ্জাম।
ব্র্যাড্ড সজনি

উপরের ব্যাখ্যাগুলি অন্তর্ভুক্ত করার জন্য আপডেট করা উত্তর।
ব্র্যাড্ড সজনে

71

POSIX হিসাবে স্ট্যান্ডার্ড ত্রুটিটিকে সংজ্ঞায়িত করে

ডায়গনিস্টিক আউটপুট লেখার জন্য

এটি কেবল ত্রুটি বার্তাগুলির মধ্যে এর ব্যবহারকে সীমাবদ্ধ করে না। আমি অগ্রগতির তথ্যগুলি ডায়াগনস্টিক আউটপুট হিসাবে বিবেচনা করব, সুতরাং এটি স্ট্যান্ডার্ড ত্রুটির সাথে সম্পর্কিত।


8
পাইথনের এফডব্লিউআইডাব্লুটি stdoutডিফল্টরূপে লাইন-বাফার করা হয় যেখানে stderrঅবিশ্রুত হয়, তেমনি stderrঅগ্রগতি পাঠ্য / বার / স্পিনারগুলিতে একটি নতুন লাইন থাকে না এমন লেখার প্রাকৃতিক পছন্দ। (আপনি যদি এই ধরণের পাঠ্য লিখেন তবে stdoutআপনার অগ্রগতি আউটপুট কলগুলিকে stdout.flush()দৃশ্যমান করার জন্য আপনাকে বিশৃঙ্খলা করতে হবে)।
প্রধানমন্ত্রী 2Ring

12
@ পিএম 2 রিং যা পাইথনের সাথে সুনির্দিষ্ট নয়, পসিক্স সেভাবে স্ট্রিমগুলি সংজ্ঞায়িত করে।
স্টিফেন কিট

4
@ PM2Ring: যখন লেখার stdout, আপনি ঘনিষ্ঠরূপে আপনার পাঠ্য এমনকি যদি প্রয়োজন নেই একটি newline ধারণ যদি আপনি আপনার অগ্রগতি প্রতিবেদন আসলে পুনঃনির্দেশিত রিয়েল টাইমে দেখা করতে চান।

@ হার্কাইল আহ, ভালো কথা। আমি পুনঃনির্দেশ বিবেচনা করছিলাম না।
প্রধানমন্ত্রী 2 রিং

1
@ ওয়াটওয়ার, আহ? না। প্রস্থান স্থিতি 0 হলে উত্তরীয় স্টারডার পাঠ্যটি গ্রাস করে That এ দাবিটি কেবল মিথ্যা।
চার্লস ডাফি

10

পসিক্স শেল এবং ইউটিলিটিসে "ডায়গনিস্টিক তথ্য" সম্পর্কে আরও কিছুটা কংক্রিট , 1.4: ইউটিলিটি বর্ণনা ডিফল্ট (জোর দেওয়া খনি):

stderr

STDERR বিভাগটি ইউটিলিটির স্ট্যান্ডার্ড ত্রুটি আউটপুট বর্ণনা করে describes কেবলমাত্র সেই বার্তাগুলি যা ইউটিলিটি দ্বারা উদ্দেশ্যমূলকভাবে প্রেরণ করা হয়েছে তা বর্ণিত হয়েছে। স্ট্যান্ডার্ড ত্রুটির জন্য টার্মিনালের ব্যবহার ব্যাকগ্রাউন্ডে ব্যবহার করার সময় স্ট্যান্ডার্ড ত্রুটি আউটপুট লেখার কোনও স্ট্যান্ডার্ড ইউটিলিটিগুলির কারণ হতে পারে। এই কারণে, অ্যাপ্লিকেশনগুলিকে পটভূমিতে রাখতে স্ক্রিপ্টগুলিতে ইন্টারেক্টিভ বৈশিষ্ট্যগুলি ব্যবহার করা উচিত নয়।

বেশিরভাগ ইউটিলিটিগুলির জন্য ডায়াগনস্টিক বার্তাগুলির ফর্ম্যাটটি অনির্দিষ্ট নয়, তবে ডায়াগোনস্টিক এবং তথ্যমূলক বার্তাগুলির ভাষা এবং সাংস্কৃতিক সম্মেলনগুলির ফর্মিটি POSIX.1-2008 এর এই ভলিউম দ্বারা অনির্দিষ্ট করা হয়েছে এটি LC_MESSAGES এবং [XSI] এর সেটিং দ্বারা প্রভাবিত হওয়া উচিত [বিকল্প শুরু ] এনএলস্প্যাট। [বিকল্প শেষ]

স্ট্যান্ডার্ড ইউটিলিটিগুলির নির্দিষ্ট মানযুক্ত ত্রুটি আউটপুট POSIX.1-2-2008 এর এই ভলিউমের দ্বারা সরবরাহ করা ব্যতীত POSIX.1-2-2008 এর এই ভলিউমে সংজ্ঞায়িত পরিবেশের ভেরিয়েবলগুলির অস্তিত্ব বা মানের উপর নির্ভর করবে না।

ডিফল্ট আচরণ : যখন এই বিভাগটি "স্ট্যান্ডার্ড ত্রুটি কেবল ডায়গনিস্টিক বার্তাগুলির জন্য ব্যবহার করা হবে" হিসাবে তালিকাভুক্ত করা হয়, এর অর্থ হ'ল ডায়াগনস্টিক বার্তাগুলি কেবল প্রস্থান স্থিতি নির্দেশ করলেই স্ট্যান্ডার্ড ত্রুটিতে প্রেরণ করা হবে an ঘটেছে এবং ইউটিলিটি POSIX.1-2-2008 এর এই ভলিউম দ্বারা বর্ণিত হিসাবে ব্যবহৃত হয়।

যখন এই বিভাগটি "ব্যবহৃত হয়নি" হিসাবে তালিকাভুক্ত করা হয়েছে, এর অর্থ এই যে পসিক্স ১.২-২০০৮ এর এই ভলিউমে বর্ণিত হিসাবে ইউটিলিটিটি ব্যবহৃত হয় তখন স্ট্যান্ডার্ড ত্রুটি ব্যবহার করা হবে না।

আইএএনএএসএল, তবে আমি ব্যাখ্যা করছি যে স্টার্ডারের আউটপুট কেবল তখনই হবে যখন ইউটিলিটি কোনও ত্রুটির প্রস্থান কোডটি ফেরত দেবে। যেহেতু এটি সফল সম্পাদনের জন্য ইভেন্টগুলির স্বাভাবিক পাঠ্যক্রম হওয়া উচিত নয়, ততক্ষণ কোনও ত্রুটি না ঘটে ( POSIX ইউটিলিটি) দ্বারা কোনও অগ্রগতির তথ্য মুদ্রণ করা উচিত নয় (যদি না, অবশ্যই অন্যথায় নির্দিষ্ট না হয় ইত্যাদি)।


আমি স্ট্যান্ডার্ড ত্রুটি ব্যবহারের সাধারণ সংজ্ঞা হিসাবে নয়, প্রতিটি POSIX ইউটিলিটির স্পেসিফিকেশনগুলিতে প্রদত্ত "STDERR" বিভাগটির অর্থ বর্ণনা করার জন্য এটি বুঝতে পারি। আমি মনে করি না টেরডন এখানে একটি স্ট্যান্ডার্ড পসিক্স ইউটিলিটি লিখছে ;-)।
স্টিফেন কিট

1
@ স্টেফেনকিট আমিও করি না। তবে তিনি তার সিটিওর সাথে বিতর্ক করছেন, যিনি বলেছিলেন যে স্ট্যাডার আউটপুটটি কিছু ভুল হওয়ার ইঙ্গিত, এবং মানটি তার দাবিটিকে ডিফল্ট আচরণ হিসাবে সমর্থন করে।
মুরু

1
এটি কেবলমাত্র পসিক্স ইউটিলিটিগুলির জন্য ডিফল্ট আচরণ হিসাবে দাবিটিকে সমর্থন করে এবং তারপরেও কেবলমাত্র নির্দিষ্ট ক্ষেত্রে (ইউটিলিটিস যা উল্লিখিত বাক্যাংশটি ব্যবহার করে)। পসিক্সের এই অংশটি আদর্শিক নয় (এটিআইআইআই), এটি একটি টেমপ্লেট: এটি আপনাকে কীভাবে ইউটিলিটি স্পেসিফিকেশন পড়তে হবে তা বলে, এটি ইউটিলিটির আচরণ নির্দিষ্ট করে না। বিশেষত, এটি বাক্যাংশগুলির অর্থ সংজ্ঞায়িত করে "স্ট্যান্ডার্ড ত্রুটি কেবল ডায়াগনস্টিক বার্তাগুলির জন্যই ব্যবহৃত হবে।" এবং "ব্যবহৃত হয়নি।" ইউটিলিটি নির্দিষ্টকরণের "এসটিডিআরআর" বিভাগে। প্রতিটি ইউটিলিটি তার আচরণ সুনির্দিষ্ট করে এবং এটি সেই বাক্যাংশগুলি শর্টহ্যান্ড হিসাবে ব্যবহার করতে পারে।
স্টিফেন কিট

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

2
ঠিক আছে, আমি বলব "অন্যথায় নির্দিষ্ট না করা" বরং একটি উল্লেখযোগ্য সতর্কতামূলক বিষয়: একটি পসিক্স ইউটিলিটি খুব ভালভাবে উল্লেখ করতে পারে যে এটি তার প্রমিত তথ্যের আওতায় অগ্রগতির তথ্যকে আউটপুট করে এবং মানদণ্ড অনুসারে এটি মেনে চলে। আপনি ঠিক বলেছেন, এটি আকর্ষণীয় যে "ডিফল্ট আচরণ" (যার জন্য এখনও প্রাসঙ্গিক বিভাগে নির্দিষ্ট উল্লেখ প্রয়োজন) কেবলমাত্র যদি প্রস্থান কোডটি কোনও ত্রুটি নির্দেশ করে তবে স্ট্যান্ডার্ড ত্রুটি ব্যবহার করা হয়; তবে এটি সীমাবদ্ধ নয়।
স্টিফেন কিট

7

বাদ দেওয়ার নীতি অনুসারে, এটি কেবল স্টাডারে যেতে পারে। হ্যাঁ, আমি জানি আপনি একটি অফিসিয়াল স্পেসিফিকেশন সম্পর্কে জিজ্ঞাসা করেছিলেন, যা আমি আপনাকে স্টিফেন কিট দ্বারা প্রদত্ত POSIX স্পেসিফিকেশনের লিঙ্কের বাইরে উপস্থাপন করতে পারি না, যেখানে স্টার্ডার ডায়াগনস্টিক উদ্দেশ্যে বলা হয়েছে।

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

So. আপনার প্রোগ্রামের আসল "পেਲੋਡ" ব্যতীত আর কিছুই স্টাডাউটের অন্তর্ভুক্ত নয়। যদি আপনার প্রোগ্রামটির কোনও আউটপুট না থাকে তবে কোনও কিছুই স্টাডআউটে যাওয়া উচিত নয়। এটি অগ্রগতি প্রতিবেদন সহ সমস্ত কিছুর জন্য স্টাডারকে ছেড়ে দেয়।

মঞ্জুর, এটি একটি গর্ত ছেড়ে দেয় - সম্ভবত "স্টডিফ্লুফ" বা এমন কোনও কিছু পাওয়া ভাল লাগবে যা আউটপুট বা ত্রুটি নয় তবে অগ্রগতি প্রতিবেদন, ডিবাগিং এবং সামসুচের জন্য নয়। প্রকৃতপক্ষে, কিছুই আপনাকে এটি করা থেকে বিরত রাখে, অর্থাত্‍, আপনি আপনার অগ্রগতিটি ডেস্ক্রিপ্টর 3 এ ফাইল প্রিন্ট করতে পারেন Example উদাহরণ:

$ perl -e 'open($fd, ">", "/dev/fd/3"); print $fd "hello\n"'

এটি কোনও আউটপুট উত্পাদন করে না। (*)

$ perl -e 'open($fd, ">", "/dev/fd/3"); print $fd "hello\n"'  3>&1
hello

এটি প্রিন্ট করে fd-3, যা স্টডআউটে পুনঃনির্দেশিত হয়।

(*) প্রথম উদাহরণটি কোনও আউটপুট দেয় না তবে এটি এখনও খানিকটা দূরে; The openব্যর্থ হয় এবং $!ধারণ করবে no such file or directory; কেবল এটি উদাহরণ হিসাবে ধরুন, অবশ্যই আন্তরিকভাবে এই জাতীয়ভাবে ব্যবহার করা উচিত নয়। একটি আসল প্রোগ্রামে, আপনি যদি এই রুটে যেতে চান, আপনি /dev/fd/3ব্যবহারযোগ্য কিনা তা পরীক্ষা করে দেখতে পারেন এবং এটি আপনার অগ্রগতি প্রতিবেদনগুলি সক্রিয় করতে হবে কিনা তার ইঙ্গিত হিসাবে গ্রহণ করতে পারেন; আপনাকে এটি খুব তাড়াতাড়ি করতে হবে যাতে আপনি openসত্যিকারের ফাইল এবং এর জন্য আপনার নিজের দ্বারা বিভ্রান্ত না হন ...


কী fd-3? তৃতীয় ফ্লপি ডিস্ক?
পিটার মর্টেনসেন

ফাইল বর্ণনাকারী 3, @ পিটারমোরটেনসেন
21'8 এ AnoE

-1

ব্যবহারকারী যদি এটির সাথে অনুরোধ করে থাকে --helpএবং যদি তারা কোনও ভুল করে থাকে তবে স্টাডারের কাছে ব্যবহারের বার্তাটি স্টাডাউটে যেতে হবে । নিঃশর্তভাবে এটিকে স্ট্যাডারে প্রিন্ট করা অসুবিধাজনক কারণ এটি পেজার / গ্রেপ / ইত্যাদি দ্বারা এটি দেখতে আরও কঠিন করে তোলে।

এছাড়াও, আমি তৃতীয় উপায়টি বলতে পারি: অগ্রগতি রিপোর্ট / স্পিনার / ইত্যাদির জন্য ওপেন / ডেভ / টিটিআই।


6
দুঃখিত, কিন্তু এটি প্রশ্নের উত্তর দিচ্ছে না। আমি বিশেষভাবে মতামত নয়, সরকারী গাইডলাইন চেয়েছি । যাই হোক না কেন, আমি যদি মতামত চেয়েছিলাম, আপনি আলাদা প্রশ্নের উত্তর দিচ্ছেন। আমি কোনও --helpবার্তা বা সাহায্যের কথা বলছি না । প্রশ্নটি আবার পড়ুন।
টেরডন

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

3
আমি জানি না যে তারা করে, তাই আমি জিজ্ঞাসা করি। এবং অফিসিয়াল হিসাবে, পসিক্স স্ট্যান্ডার্ডের কোনও প্রোগ্রামটি কী আচরণ করা উচিত তার বিভিন্ন মিনিটের বিশদের বিশদ রয়েছে। স্টিফেন তার উত্তরে যেমন উল্লেখ করেছেন, তেমনি স্ট্যাডারকে কী করা উচিত সে সম্পর্কে একটি অস্পষ্ট পরামর্শ। জিএনইউ কোডিং স্ট্যান্ডার্ডেও একই রকম কিছু থাকতে পারে। মূলত, এমন কোনো গোষ্ঠী যে সক্রিয় এবং * স্নো বাস্তু কোড উৎপন্ন একটি প্রমিত আমি আগ্রহী হতে চাই থাকতে পারে।
terdon

@terdon আপনি কি বিদ্যমান প্রোগ্রামগুলির উদাহরণ দিয়ে ঠিক হবেন? কার্ল, উইজেট এবং পিভি সবগুলি স্ট্যাডার ব্যবহার করে, উইজেট এবং পিভি দিয়ে এটি শর্তসাপেক্ষ করে এটি একটি টিটিটি এবং কার্ল এটি tty না হওয়ার কারণে এটি শর্তাধীন করে তোলে making
র্যান্ডম 832

4
এছাড়া, এটিও শোনাচ্ছে মত আপনার সিটিও মনে করেন যে একটি কলিং প্রোগ্রাম যার অর্থ একটি ত্রুটি ঘটেছে বদলে প্রস্থান অবস্থা দিকে তাকিয়ে হিসাবে দ্বারা stderr ডেটা উপস্থিতিতে প্রতিক্রিয়া করা উচিত নয়। এটি অবশ্যই খারাপ অনুশীলন (এবং প্রস্থান স্থিতি পরীক্ষা করার চেয়ে লেখার পক্ষে আরও কঠিন) এবং তাকে বোঝানোর জন্য এটি আরও ভাল কোণ হতে পারে।
র্যান্ডম 832
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.