আমাকে কেউ বলতে পারবে? সি ভাষার মধ্যে exit(0)এবং পার্থক্য কী exit(1)?
উত্তর:
সি ভাষার মধ্যে exit(0)এবং পার্থক্য কী exit(1)?
exit(0) সফল প্রোগ্রাম সমাপ্তির ইঙ্গিত দেয় এবং এটি সম্পূর্ণরূপে বহনযোগ্য, যখন
exit(1) (সাধারণত) অসফল সমাপ্তি নির্দেশ করে। তবে এটির ব্যবহার অ-বহনযোগ্য।
নোট করুন যে সি স্ট্যান্ডার্ড সংজ্ঞায়িত করে EXIT_SUCCESSএবং EXIT_FAILUREসি প্রোগ্রাম থেকে সমাপ্তির স্থিতি ফিরিয়ে দেয়।
0এবং EXIT_SUCCESSসফল সমাপ্তির ইঙ্গিত দেওয়ার জন্য মান দ্বারা নির্দিষ্ট মানগুলি তবে, কেবলমাত্র EXIT_FAILUREঅসফল সমাপ্তি ফিরিয়ে দেওয়ার জন্য মান মান value 1যদিও অনেকগুলি বাস্তবায়নে একই জন্য ব্যবহৃত হয়।
তথ্যসূত্র:
সি 99 স্ট্যান্ডার্ড: 7.20.4.3 exitফাংশন
প্যারা 5
পরিশেষে, নিয়ন্ত্রণ হোস্ট পরিবেশে ফিরে আসে। যদি স্থিতির মান শূন্য হয় বা
EXIT_SUCCESS, স্থিতির সফল সমাপ্তির একটি বাস্তবায়ন-ডি-নেড ফর্মটি ফিরে আসে। যদি স্থিতির মান হয়EXIT_FAILUREতবে স্থিতির অসম্পূর্ণ সমাপ্তির একটি বাস্তবায়ন-ডি-এনড ফর্মটি ফিরিয়ে দেওয়া হয়। অন্যথায় স্থিতি ফিরিয়ে দেওয়া হ'ল বাস্তবায়ন - ডিএনড।
exitআপনার উদ্বেগের মধ্যে সবচেয়ে কম (নরক, সেখানে একটি সি লাইব্রেরিও উপলভ্য নাও হতে পারে O
exitকোনও বিজোড় মান সহকারে কল করা সাফল্যের পরিচয় দেয়। exit(0)সি কনফর্মেন্সের জন্য বিশেষ কেস হিসাবে বিবেচিত হয়। হ্যাঁ, পসিক্স একটি মান, তবে সমস্ত সিস্টেমই এর সাথে খাপ খায় না। আপনি যদি পজিক্স ধরে নিয়েছে এমন কোড লিখতে চান তবে আপনি তা করতে নির্দ্বিধায় হন তবে এটি আপনার কোডের বহনযোগ্যতা সীমাবদ্ধ করে।
exit সি ভাষায় একটি পূর্ণসংখ্যা নেয় যা প্রস্থান স্থিতি উপস্থাপন করে।
সাধারণত, 0 এর একটি প্রস্থান স্থিতি একটি সাফল্য হিসাবে বিবেচনা করা হয়, বা প্রোগ্রামের সফল প্রয়োগের কারণে ইচ্ছাকৃতভাবে প্রস্থান করা হয়।
1 এর প্রস্থান স্থিতিটি একটি ব্যর্থতা হিসাবে গণ্য করা হয়, এবং সর্বাধিক সাধারণ অর্থ এই যে প্রোগ্রামটি কোনও কারণে প্রস্থান করতে হয়েছিল এবং সাধারণ প্রোগ্রাম প্রবাহে সফলভাবে সবকিছু শেষ করতে সক্ষম হয় নি।
প্রস্থান স্থিতির বিষয়ে কথা বলার জন্য এখানে একটি জিএনইউ রিসোর্স ।
@ অ্যালস যেমন বলেছে, 0 এবং 1 এর জায়গায় দুটি কনস্ট্যান্ট ব্যবহার করা উচিত।
EXIT_SUCCESS শূন্য হতে মান দ্বারা সংজ্ঞায়িত করা হয়।
EXIT_FAILURE এক হিসাবে মান দ্বারা সীমাবদ্ধ নয়, তবে অনেকগুলি সিস্টেম এটিকে এক হিসাবে প্রয়োগ করে।
পার্থক্য হ'ল পরিবেশে ফিরে আসা মানটি 0পূর্বের ক্ষেত্রে এবং 1পরবর্তী ক্ষেত্রে:
$ ./prog_with_exit_0
$ echo $?
0
$
এবং
$ ./prog_with_exit_1
$ echo $?
1
$
এছাড়াও মনে রাখবেন যে ম্যাক্রো মান EXIT_SUCCESSএবং কার্যকারিতা EXIT_FAILUREহিসাবে আর্গুমেন্ট হিসাবে ব্যবহৃত exitবাস্তবায়ন সংজ্ঞায়িত কিন্তু সাধারণত যথাক্রমে সেট করা হয় 0এবং একটি শূন্য-সংখ্যা। (পসিক্স EXIT_SUCCESS0 হতে হবে)। সুতরাং সাধারণত exit(0)একটি সাফল্য এবংexit(1) একটি ব্যর্থতা ।
একটি exitএকটি আর্গুমেন্ট সহ ফাংশন কল mainফাংশন বিবৃতি সমতূল্য returnএকই যুক্তি দিয়ে।
প্রস্থান এমন একটি সিস্টেম কল যা একটি চলমান প্রক্রিয়া শেষ করার জন্য ব্যবহৃত হয় যা থেকে এটি কল করা হয়। প্রস্থান করার জন্য প্যারামিটারটি শিশু প্রক্রিয়ার স্থিতি সম্পর্কে পিতামাতার প্রক্রিয়াটি অবহিত করতে ব্যবহৃত হয়। সুতরাং, প্রসেসের সফল সম্পাদন নির্দেশ করতে প্রস্থান (0) ব্যবহার করা যেতে পারে এবং একটি ত্রুটি চিহ্নিত করতে প্রস্থান (1) হতে পারে। রেফারেন্স লিঙ্ক
exit(0) মানে প্রোগ্রাম (প্রক্রিয়া) সাধারণত সাফল্যের সাথে শেষ হয় ..
exit(1) মানে প্রোগ্রাম (প্রক্রিয়া) সাধারণত ব্যর্থ হয়ে যায় ..
আপনি যদি এই জিনিসটি পর্যবেক্ষণ করতে চান তবে আপনাকে অবশ্যই ইউনিক্সে সিগন্যাল হ্যান্ডলিং এবং প্রক্রিয়া পরিচালনা জানতে হবে ...
সম্পর্কে জানুন sigaction, watipid().. (এর জন্য) ... যেমন .... এপিআই ...........
প্রস্থান (0) প্রস্থান (EXIT_SUCCESS) এর সমতুল্য।
প্রস্থান (1) হ'ল প্রস্থান (EXIT_FAILURE) এর সমতুল্য।
ব্যর্থতায় সাধারণত প্রক্রিয়াটি থেকে বেরিয়ে আসার জন্য কোনও ধনাত্মক মান ফিরে আসে, যা আপনি shell? ব্যবহার করে শেলটিতে খুঁজে পেতে পারেন।
128 এরও বেশি মান যা সংকেত দ্বারা শেষ হওয়ার কারণে ঘটে। সুতরাং যদি কোনও শেল কমান্ড সিগন্যাল দ্বারা সমাপ্ত হয় তবে রিটার্নের স্থিতিটি অবশ্যই হবে (128 + সিগন্যাল নম্বর)।
উদাহরণ স্বরূপ:
কোনও শেল কমান্ড যদি SIGINT দ্বারা শেষ হয় তবে $? 130 (128 + 2) দেবে (এখানে 2 টি সংকেতের জন্য সংকেত নম্বর, কিল-এল ব্যবহার করে চেক করুন)
প্রস্থান () সর্বদা একটি পূর্ণসংখ্যার মান সহ কল করা উচিত এবং অ-শূন্য মানগুলি ত্রুটি কোড হিসাবে ব্যবহৃত হয়।
আরও দেখুন: প্রস্থান () ফাংশনের ব্যবহার
exit function। সি প্রোগ্রামিং ল্যাঙ্গুয়েজে, প্রস্থান ফাংশনটি প্রস্থানের সাথে নিবন্ধিত সমস্ত ফাংশনকে কল করে এবং প্রোগ্রামটি সমাপ্ত করে।
exit(1)মানে প্রোগ্রাম (প্রক্রিয়া) অসফলভাবে শেষ করা।
ফাইল বাফারগুলি ফ্লাশ করা হয়, স্ট্রিমগুলি বন্ধ রয়েছে এবং অস্থায়ী ফাইলগুলি মুছে ফেলা হয়
exit(0) মানে প্রোগ্রাম (প্রক্রিয়া) সফলভাবে শেষ হবে।
EXIT_FAILURE) তাই অপর্যাপ্ত।