কেন `হত্যা -L` 32 এবং 33 এর সংকেত সংখ্যা তালিকা করে না?


18

kill -lলিনাক্সে এক্সিকিউট করা দেয়:

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

কি হয়েছে 32এবং 33? কেন এটি তালিকাভুক্ত নয়? তারা 1 এ শুরু করতে পারে এবং মাঝখানে 2 এড়িয়ে যাওয়ার পরিবর্তে 62 এ শেষ হতে পারে?


PS "ত্রুটি কোডগুলি" নেই - সেগুলি সংকেত সংখ্যা।
জি-ম্যান

উত্তর:


20

এটি এনপিটিএল এর কারণে । এটি জিএনইউ সি লাইব্রেরির অংশ হওয়ায় প্রায় প্রতিটি আধুনিক লিনাক্স বিতরণ প্রথম দুটি রিয়েল টাইম সিগন্যাল ব্যবহার করে না। NPTL- র একটি বাস্তবায়ন POSIX টপিক । এনপিটিএল প্রথম দুটি রিয়েল-টাইম সিগন্যালের অভ্যন্তরীণ ব্যবহার করে।

সিগন্যাল ম্যানপেজের এই অংশটি খুব আকর্ষণীয়:

লিনাক্স কার্নেল ৩৩ টি বিভিন্ন রিয়েল-টাইম সংকেতকে সমর্থন করে, যার সংখ্যা ৩৩ থেকে 64৪ রয়েছে। তবে, গ্লিবসি পসিক্স থ্রেড প্রয়োগের অভ্যন্তরীণভাবে দুটি (এনপিটিএল জন্য) বা তিনটি (লিনাক্সথ্রেডের জন্য) রিয়েল-টাইম সিগন্যাল ব্যবহার করে (pthreads (7) দেখুন) , এবং SIGRTMIN এর মান যথাযথভাবে অ্যাডজাস্ট করে (34 বা 35)। কারণ উপলব্ধ রিয়েল-টাইম সংকেতের পরিসীমা গ্লিবসি থ্রেডিং বাস্তবায়ন অনুসারে পরিবর্তিত হয় (এবং উপলব্ধ কার্নেল এবং গ্লিবসি অনুসারে চলমান সময়ে এই ভিন্নতা দেখা দিতে পারে), এবং প্রকৃতপক্ষে রিয়েল-টাইম সংকেতের পরিসীমা ইউএনআইএক্স সিস্টেমগুলির মধ্যে পরিবর্তিত হয়, প্রোগ্রামগুলি উচিত হার্ড-কোডেড নম্বর ব্যবহার করে রিয়েল-টাইম সংকেতগুলিকে কখনই উল্লেখ করবেন না, পরিবর্তে সর্বদা স্বাক্ষরিত সাইনআরটমিন + এন ব্যবহার করে রিয়েল-টাইম সংকেতগুলি উল্লেখ করা উচিত এবং উপযুক্ত (রান-টাইম) চেক অন্তর্ভুক্ত করা উচিত যা SIGRTMIN + n SIGRTMAX ছাড়িয়ে যায় না।

আমি গ্লোবিকের জন্য উত্স কোডও পরীক্ষা করেছিলাম; 22 লাইন দেখুন । __SIGRTMIN+২ বৃদ্ধি পেয়েছে, সুতরাং প্রথম দুটি রিয়েল টাইম সংকেতগুলি রিয়েল টাইম সংকেতের পরিসর থেকে বাদ দেওয়া হয়েছে।


তাহলে কীভাবে একজন চালানো কোডের এক টুকরোতে রান-টাইমে SIGRTMIN এর বর্তমান মান পাবেন ?
স্লিএসভেন

10

কারণ সংকেতগুলি হ'ল:

SIGWAITING 32 Ignore All LWPs blocked 
    SIGLWP 33 Ignore Virtual Interprocessor Interrupt for Threads Library 

যার কোনটিই লিনাক্সে সমর্থিত নয়। (এলডাব্লুপি মানে লাইটওয়েট প্রক্রিয়া )

সূত্র: আইবিএম ডেভেলপার ওয়ার্কস সোলারিস থেকে লিনাক্স পোর্টিং গাইড


লিনাক্সের সিগন্যাল ছিল 32 এবং 33. দেখুন: unixhelp.ed.ac.uk/CGI/man-cgi?signal+7 , Real-time Signalsবিভাগ।
cuonglm

@ জ্নোক - kill -l RTMINআপনার উল্লেখিত নথি অনুসারে ৩২ থেকে নয়, ৩২ এ শুরু হবে। এটির একটি বলছে এটি 33 এ শুরু হয়, তবে আরও বলে যে আপনার সংখ্যা দ্বারা তাদের উল্লেখ করা উচিত নয় কারণ গ্লিবসি থ্রেডিং প্রয়োগের উপর নির্ভর করে সংখ্যাগুলি পৃথক হতে পারে।
গ্যারেথTheRed

অবশ্যই এটি সিস্টেমের ভিত্তিতে পরিবর্তিত হয় তবে লিনাক্স শব্দটি সমর্থন করে না এটি ভুল is আপনি এটি উল্লেখ করতে পারেন: cse.psu.edu/~dheller/cmpsc311/Lectures/Process-Control-Signals/… । সম্ভবত আমাদের এমন একজন ভেরেনের প্রয়োজন যারা লিনাক্সের সাথে দীর্ঘ সময় আগে কাজ করেছেন যা আমাদের জানান, 32, 33 সিগন্যালের মাধ্যমে কী ঘটে। কেন সেগুলি নথিভুক্ত করা হয় না।
cuonglm

এগুলি অভ্যন্তরীণভাবে আরটি পাইথ্রেড লাইব্রেরি দ্বারা ব্যবহৃত হয় - এবং অতীতে তিনটি নয় দুটি থাকত কারণ একটি ভিন্ন সিস্টেম অভ্যন্তরীণ উদ্দেশ্যে এটি ব্যবহার করেছিল। কোডিং দৃষ্টিকোণ থেকে আপনার সিগসাইএসের উপরের সিগন্যালের জন্য কমপাইল-টাইম ধ্রুবক ব্যবহার করার কথা নয় যেমন SIGRTMINএকটি #defineলাইনের সাথে একটি সেট কারণ যখন নির্বাহীটি চালানো হয় তখন সেই সংখ্যাটি সম্ভবত পরিবর্তনের সাপেক্ষে। এটি কয়েক বছর আগে প্রদর্শিত হবে যখন উভয় pthread libs ব্যবহার করা হত যদি একটি pthread লাইব্রেরির বিরুদ্ধে সংকলিত অ্যাপ্লিকেশনটি অন্য সিস্টেমে পুনরায় চালু করা সিস্টেমে চালিত হয়!
স্লাইভেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.