সি তে প্রস্থান (0) এবং প্রস্থান (1) এর মধ্যে পার্থক্য কী?


97

আমাকে কেউ বলতে পারবে? সি ভাষার মধ্যে exit(0)এবং পার্থক্য কী exit(1)?

উত্তর:


118

সি ভাষার মধ্যে 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তবে স্থিতির অসম্পূর্ণ সমাপ্তির একটি বাস্তবায়ন-ডি-এনড ফর্মটি ফিরিয়ে দেওয়া হয়। অন্যথায় স্থিতি ফিরিয়ে দেওয়া হ'ল বাস্তবায়ন - ডিএনড।


4
আপনি বহনযোগ্যতা ব্যাখ্যা করতে পারেন? বিশেষত, ননজারো প্রস্থান কোডগুলি বিভিন্ন ব্যর্থতা মোডগুলি নির্দেশ করে। অ্যাপ্লিকেশনটির জন্য আরও তথ্য সরবরাহ করতে এটি ব্যবহার করা সাধারণ। একটি একক ধ্রুবক ( EXIT_FAILURE) তাই অপর্যাপ্ত।
কনরাড রুডল্ফ

@ কনরাড রুডল্ফ: আমি প্রাসঙ্গিক উদ্ধৃতি যুক্ত করেছি। আশা করি এইটি কাজ করবে.
অলোক সেভ

4
@ অলস: পসিক্স একটি মান। সি মান বলতে পারে "বাস্তবায়ন-সংজ্ঞায়িত" কিন্তু যে "পোর্টেবল না" বলার সমতূল্য না, যখন আসলে বাস্তবায়নের না কনভেনশন উপর সম্মত হন।
ক্যাট প্লাস প্লাস

4
@ পিটারএম: আমাকে এমন একটি প্ল্যাটফর্ম সন্ধান করুন যা এই সম্মেলনটি ব্যবহার করে না। এটি সম্ভবত কিছু বিশেষায়িত / এম্বেড / ফ্রিস্ট্যান্ডিং / যাই হোক না কেন পরিবেশ, যেখানে বহনযোগ্যতা exitআপনার উদ্বেগের মধ্যে সবচেয়ে কম (নরক, সেখানে একটি সি লাইব্রেরিও উপলভ্য নাও হতে পারে O
ক্যাট প্লাস প্লাস

4
@ গুগলপ্লাস প্লাস: ওপেনভিএমএসে, exitকোনও বিজোড় মান সহকারে কল করা সাফল্যের পরিচয় দেয়। exit(0)সি কনফর্মেন্সের জন্য বিশেষ কেস হিসাবে বিবেচিত হয়। হ্যাঁ, পসিক্স একটি মান, তবে সমস্ত সিস্টেমই এর সাথে খাপ খায় না। আপনি যদি পজিক্স ধরে নিয়েছে এমন কোড লিখতে চান তবে আপনি তা করতে নির্দ্বিধায় হন তবে এটি আপনার কোডের বহনযোগ্যতা সীমাবদ্ধ করে।
কিথ থমসন

12

exit সি ভাষায় একটি পূর্ণসংখ্যা নেয় যা প্রস্থান স্থিতি উপস্থাপন করে।

প্রস্থান সাফল্য

সাধারণত, 0 এর একটি প্রস্থান স্থিতি একটি সাফল্য হিসাবে বিবেচনা করা হয়, বা প্রোগ্রামের সফল প্রয়োগের কারণে ইচ্ছাকৃতভাবে প্রস্থান করা হয়।

প্রস্থান ব্যর্থতা

1 এর প্রস্থান স্থিতিটি একটি ব্যর্থতা হিসাবে গণ্য করা হয়, এবং সর্বাধিক সাধারণ অর্থ এই যে প্রোগ্রামটি কোনও কারণে প্রস্থান করতে হয়েছিল এবং সাধারণ প্রোগ্রাম প্রবাহে সফলভাবে সবকিছু শেষ করতে সক্ষম হয় নি।

প্রস্থান স্থিতির বিষয়ে কথা বলার জন্য এখানে একটি জিএনইউ রিসোর্স


@ অ্যালস যেমন বলেছে, 0 এবং 1 এর জায়গায় দুটি কনস্ট্যান্ট ব্যবহার করা উচিত।

EXIT_SUCCESS শূন্য হতে মান দ্বারা সংজ্ঞায়িত করা হয়।

EXIT_FAILURE এক হিসাবে মান দ্বারা সীমাবদ্ধ নয়, তবে অনেকগুলি সিস্টেম এটিকে এক হিসাবে প্রয়োগ করে।


9

exit(0)নির্দেশ করে যে প্রোগ্রামটি ত্রুটি ছাড়াই সমাপ্ত হয়েছে। exit(1)ইঙ্গিত দেয় যে একটি ত্রুটি ছিল।

1বিভিন্ন ধরণের ত্রুটির মধ্যে পার্থক্য ছাড়া আপনি ভিন্ন মানগুলি ব্যবহার করতে পারেন ।


3

পার্থক্য হ'ল পরিবেশে ফিরে আসা মানটি 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একই যুক্তি দিয়ে।


2

প্রস্থান এমন একটি সিস্টেম কল যা একটি চলমান প্রক্রিয়া শেষ করার জন্য ব্যবহৃত হয় যা থেকে এটি কল করা হয়। প্রস্থান করার জন্য প্যারামিটারটি শিশু প্রক্রিয়ার স্থিতি সম্পর্কে পিতামাতার প্রক্রিয়াটি অবহিত করতে ব্যবহৃত হয়। সুতরাং, প্রসেসের সফল সম্পাদন নির্দেশ করতে প্রস্থান (0) ব্যবহার করা যেতে পারে এবং একটি ত্রুটি চিহ্নিত করতে প্রস্থান (1) হতে পারে। রেফারেন্স লিঙ্ক


1

exit(0) মানে প্রোগ্রাম (প্রক্রিয়া) সাধারণত সাফল্যের সাথে শেষ হয় ..

exit(1) মানে প্রোগ্রাম (প্রক্রিয়া) সাধারণত ব্যর্থ হয়ে যায় ..

আপনি যদি এই জিনিসটি পর্যবেক্ষণ করতে চান তবে আপনাকে অবশ্যই ইউনিক্সে সিগন্যাল হ্যান্ডলিং এবং প্রক্রিয়া পরিচালনা জানতে হবে ...

সম্পর্কে জানুন sigaction, watipid().. (এর জন্য) ... যেমন .... এপিআই ...........


1

exit(0)মত আচরণ return 0মধ্যে main()ফাংশন, exit(1)মত আচরণ return 1। মানটি হ'ল, সেই mainফাংশনটি return 0যদি প্রোগ্রামটি সফলভাবে শেষ হয় তবে শূন্য-অমূল্যের অর্থ প্রোগ্রামটি কোনওরকম ত্রুটির সাথে বন্ধ হয়ে যায়।


1

প্রস্থান (0) প্রস্থান (EXIT_SUCCESS) এর সমতুল্য।

প্রস্থান (1) হ'ল প্রস্থান (EXIT_FAILURE) এর সমতুল্য।

ব্যর্থতায় সাধারণত প্রক্রিয়াটি থেকে বেরিয়ে আসার জন্য কোনও ধনাত্মক মান ফিরে আসে, যা আপনি shell? ব্যবহার করে শেলটিতে খুঁজে পেতে পারেন।

128 এরও বেশি মান যা সংকেত দ্বারা শেষ হওয়ার কারণে ঘটে। সুতরাং যদি কোনও শেল কমান্ড সিগন্যাল দ্বারা সমাপ্ত হয় তবে রিটার্নের স্থিতিটি অবশ্যই হবে (128 + সিগন্যাল নম্বর)।

উদাহরণ স্বরূপ:

কোনও শেল কমান্ড যদি SIGINT দ্বারা শেষ হয় তবে $? 130 (128 + 2) দেবে (এখানে 2 টি সংকেতের জন্য সংকেত নম্বর, কিল-এল ব্যবহার করে চেক করুন)


0

যখন এক্সিকিউটেবল শেষ হয় (প্রস্থান হয়) এটি চালিত শেলের একটি মান প্রদান করে। exit(0)সাধারণত ইঙ্গিত দেয় যে সবকিছু ঠিকঠাক রয়েছে, যদিও exit(1)কিছু কিছু ভুল হয়ে গেছে indicates



0

exit function। সি প্রোগ্রামিং ল্যাঙ্গুয়েজে, প্রস্থান ফাংশনটি প্রস্থানের সাথে নিবন্ধিত সমস্ত ফাংশনকে কল করে এবং প্রোগ্রামটি সমাপ্ত করে।

exit(1)মানে প্রোগ্রাম (প্রক্রিয়া) অসফলভাবে শেষ করা। ফাইল বাফারগুলি ফ্লাশ করা হয়, স্ট্রিমগুলি বন্ধ রয়েছে এবং অস্থায়ী ফাইলগুলি মুছে ফেলা হয়

exit(0) মানে প্রোগ্রাম (প্রক্রিয়া) সফলভাবে শেষ হবে।

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