আরএম-আরএফ রিটার্ন কোডগুলি


9

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

shell  unix 

3
@ Ankহানকিপ্যাঙ্কিØ আমি আশ্চর্য হয়েছি যে আরএম ম্যানপেজটি সম্ভাব্য প্রস্থান স্থিতি কোডগুলি বর্ণনা করে না। আপনি যদি man lsউবুন্টুতে থাকেন তবে এটি ননজারো প্রস্থান স্থিতির কারণ ব্যাখ্যা করে
শীটজেএস

এটির মান 0 এর চেয়ে বড়। ত্রুটির ক্ষেত্রে।
অরুণ

6
আমি এসও থেকে স্থানান্তরের সাথে একমত নই, যেহেতু ওপি রিটার্ন কোডগুলিতে আগ্রহী তা সম্ভবত এটি সম্ভবত একটি স্ক্রিপ্টিং / প্রোগ্রামিং জাতীয় সমস্যা is
অ্যাড্রিয়ান ফ্রহ্বর্থম

যাইহোক, আমি যে পরিমাণ দৃশ্যে ফিরে আসতে পারি তাতে আগ্রহী। এটি কি ওএস নির্ভর করবে?

কিন্ডা আমার এই অভিবাসন সম্পর্কে খুব হতাশ হয়ে পড়েছিল ... প্রায় বিপরীত সাফল্য পেয়েছিল = পি
ম্যাট জয়েস

উত্তর:


8

রিটার্ন কোডটি দেখতে, আপনি echo $?ব্যাশে ব্যবহার করতে পারেন ।

আসল অর্থটি দেখতে, কিছু প্ল্যাটফর্মের (যেমন ডেবিয়ান লিনাক্স) perrorবাইনারি উপলব্ধ রয়েছে, যা নিম্নলিখিত হিসাবে ব্যবহার করা যেতে পারে:

$ rm -rf something/; perror $?
rm: cannot remove `something/': Permission denied
OS error code   1:  Operation not permitted

rm -rfস্বয়ংক্রিয়ভাবে বেশিরভাগ ত্রুটি দমন করে। আপনি সম্ভবত সবচেয়ে সম্ভবত ত্রুটিটি দেখতে পাবেন 1(অপারেশনটির অনুমতি নেই), যা যদি আপনার ফাইলটি সরানোর অনুমতি না দেয় তবে ঘটবে। -fইচ্ছাকৃতভাবে বেশিরভাগ ত্রুটি দমন করে


3
উল্লেখ করার জন্য +1 perror। আমার সিস্টেমে এটি মাইএসকিএল দিয়ে চালিত হয়।
অ্যাড্রিয়ান ফ্রাওয়ার্থিথ

ডায়াগনস্টিকসের ক্ষেত্রে স্ট্রেসের সাথে আরও ভাল ভাগ্য থাকতে পারে।
ম্যাট জয়েস

@MattJoyce straceআপনি বলে যদি একটি সিস্টেম কল ব্যর্থ হওয়া, কিন্তু আপনারা যদি না উৎস তাকান আপনি জানেন না কিভাবে প্রাপ্ত syscall প্রোগ্রাম থেকে প্রস্থানের অবস্থা সম্পর্কিত (উদাহরণস্বরূপ, যদি আপনি চালানোর -f, ENOENTচাপা হয় না)। সুতরাং এটি এখানে প্রাসঙ্গিক নয়
শীট জেএস

1
@ ম্যাটজয়েস সিস্টেমে ব্যর্থ হওয়া এবং প্রোগ্রামটির একটি ত্রুটি প্রতিবেদন করার মধ্যে পার্থক্য রয়েছে এবং প্রোগ্রামটি প্রস্থান করার স্থিতি সম্পর্কে প্রশ্ন জিজ্ঞাসা করছে।
শীটজেএস

1
সত্য। আপনি আরএম এর উত্সের দিকে তাকিয়ে মনে রাখবেন ... সেখানে আসলে খুব বেশি কিছু চলছে না।
ম্যাট জয়েস

2

গিট থেকে কোর্টিলগুলি ধরেছে ...

বাহিরের দিকে তাকিয়ে আমরা দেখতে পাই ...

openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i exit
  if (status != EXIT_SUCCESS)
  exit (status);
  /* Since this program exits immediately after calling 'rm', rm need not
  atexit (close_stdin);
          usage (EXIT_FAILURE);
        exit (EXIT_SUCCESS);
          usage (EXIT_FAILURE);
        error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
        exit (EXIT_SUCCESS);
  exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);

এখন স্ট্যাটাস ভেরিয়েবলের দিকে তাকিয়ে ....

openfly@linux-host:~/coreutils/src $ cat rm.c | grep -i status
usage (int status)
  if (status != EXIT_SUCCESS)
  exit (status);
  enum RM_status status = rm (file, &x);
  assert (VALID_STATUS (status));
  exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);

দেখে মনে হচ্ছে প্রস্থান স্থিতি নিয়ে সেখানে খুব একটা চলছে না।

আমি EXIT_FAILURE এবং EXIT_SUCCESS দেখছি এবং অন্য কিছু নয়।

সুতরাং মূলত 0 এবং 1 / -1

নির্দিষ্ট প্রস্থান () সিস্কেলগুলি দেখতে এবং প্রক্রিয়া প্রবাহে কীভাবে ঘটে তা দেখুন এটি ব্যবহার করে দেখুন

openfly@linux-host:~/ $ strace rm -rf $whatever 

মোটামুটি সহজ।

সুত্র:

http://www.unix.com/man-page/Linux/EXIT_FAILURE/exit/


আমার কাছ থেকে কেন, +1 বুঝতে পারছেন না। পসিক্সও কেবল সত্যই বলেছে 0 / >0
অ্যাড্রিয়ান ফ্রাওয়ার্থিথ

2
যদিও এটি আংশিকভাবে সঠিক হতে পারে তবে এটি ওপি প্রশ্নের উত্তর দেয় না I want to know more detailed reason for the failure of the command unlike just the command is failed(return other than 0)সুতরাং নীচের ভোটগুলি বোধগম্য।
প্রিক্স

1
@ অ্যাড্রিয়ানফ্রথাইথ এক্সআইআইএফএলইউআরটি 1: "পসিক্স সিস্টেমে এই ম্যাক্রোর মান 1" ( gnu.org/software/libc/manual/html_node/Exit-Status.html )
শীট জেএস

অ্যাড্রিয়ান এফআইআইআইএফএলআইএফআর জন্য রেফ রয়েছে এবং এমনকি এটির জন্য লিনাক্স ম্যানপেজটি অন্য প্ল্যাটফর্মগুলিতে পৃথক হতে পারে তাও বোঝায়। সুতরাং আমি অনুভব করেছি যে আমি এটিরও পরামর্শ দেব।
ম্যাট জয়েস

1
আপনি যে ব্যর্থতা বার্তাগুলি সন্ধান করছেন তা প্রকৃত অপসারণ ফাইল কোডের মধ্যে রয়েছে ... ব্যস্তবক্সের জন্য আপনি git.busybox.net/busybox/tree/libbb/remove_file.c প্যাচ করতে পারেন ... প্রতিটি if (!(flags & FILEUTILS_FORCE)) {যুক্ত করার জন্য else{printf("same error message as perror");}আমি নিশ্চিত যে অন্যান্য বাস্তবায়নগুলি হবে অনুরূপ হতে পারে, তবে ব্যস্তবক্সের সংস্করণটি নিজেরাই তৈরি করা এবং অন্তর্ভুক্ত করা যেতে পারে।
টেকনোসরাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.