C:
স্ট্যান্ডার্ড এররে লিখন
কিভাবে:
সি ভাষায়, stderr
স্ট্রিমটি এরর বার্তা লেখার জন্য ব্যবহৃত হয়। স্ট্যান্ডার্ড আউটপুটে printf
ব্যবহার করে লেখার মতো নয়, stderr
-এ লিখতে fprintf
অথবা fputs
ব্যবহৃত হয়। এখানে এটি কিভাবে করবেন তা দেখানো হলো:
#include <stdio.h>
int main() {
fprintf(stderr, "এটি একটি এরর বার্তা।\n");
fputs("এটি আরেকটি এরর বার্তা।\n", stderr);
return 0;
}
স্যাম্পল আউটপুট (stderr-এ):
এটি একটি এরর বার্তা।
এটি আরেকটি এরর বার্তা।
উল্লেখ্য, যদিও কনসোলে আউটপুট stdout
-এর মতো মনে হয়, টার্মিনালে রিডাইরেকশন ব্যবহৃত হলে পার্থক্যটা স্পষ্ট হয়ে ওঠে:
$ ./your_program > output.txt
এই কমান্ডটি কেবল স্ট্যান্ডার্ড আউটপুটকে output.txt
ফাইলে রিডাইরেক্ট করে, অন্যদিকে এরর বার্তাগুলি এখনও স্ক্রিনে প্রদর্শিত হবে।
গভীরে যাওয়া
stdout
এবং stderr
-এর মধ্যে পার্থক্য ইউনিক্স-ভিত্তিক সিস্টেমে সি এবং ইউনিক্সের প্রারম্ভিক দিনগুলি থেকে চলে আসছে। এই বিভাজন আরও দৃঢ় এরর হ্যান্ডলিং এবং লগিং সম্ভব করে তোলে, যা প্রোগ্রামারদের স্ট্যান্ডার্ড প্রোগ্রাম আউটপুট থেকে স্বাধীনভাবে এরর বার্তাগুলি রিডাইরেক্ট করার সুযোগ দেয়। যদিও stderr
ডিফল্টভাবে আনবাফার্ড হয়ে থাকে যাতে এরর বার্তাগুলি অবিলম্বে আউটপুট হয়, যা ক্র্যাশ এবং অন্যান্য জরুরি ইস্যুগুলি ডিবাগ করার সময় সহায়ক হয়, stdout
সাধারণত বাফার্ড হয়, অর্থাৎ এর আউটপুট বিলম্বিত হতে পারে যতক্ষণ না বাফার ফ্লাশ হয় (যেমন, প্রোগ্রাম সম্পূর্ণ হওয়া বা ম্যানুয়াল ফ্লাশিং)।
আধুনিক অ্যাপ্লিকেশনে, stderr
-এ লেখা এখনও প্রাসঙ্গিক, বিশেষ করে কমান্ড-লাইন টুল এবং সার্ভার অ্যাপ্লিকেশনে যেখানে নিয়মিত লগ বার্তা এবং এররগুলির মধ্যে পার্থক্য করা জরুরি। তবে, জিইউআই অ্যাপ্লিকেশনগুলিতে অথবা যেখানে আরও জটিল এরর হ্যান্ডলিং প্রয়োজন, বিশেষ করে যখন আরও সোফিস্টিকেটেড লগিং মেকানিজমগুলির প্রয়োজন হয়, প্রোগ্রামাররা সম্ভবত উৎসর্গিত লগিং লাইব্রেরিগুলি ব্যবহার করবেন যা বার্তা ফরম্যাটিং, গন্�