প্রথমে আপনার দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য: SIGSTOPএবং SIGKILLঅ্যাপ্লিকেশনটি ধরা পড়তে পারে না, তবে প্রতিটি অন্যান্য সিগন্যাল এমনকি তা করতে পারে SIGSEGV। এই সম্পত্তিটি ডিবাগিংয়ের জন্য দরকারী - উদাহরণস্বরূপ, সঠিক লাইব্রেরির সহায়তায় আপনি SIGSEGVসেগফল্টটি কোথায় ঘটেছে তা দেখাতে আপনি শুনতে এবং একটি স্ট্যাক ব্যাকট্র্যাস তৈরি করতে পারেন ।
man 7 signalলিনাক্স কমান্ড লাইন থেকে টাইপ করে প্রতিটি সিগন্যাল কী করে তার আনুষ্ঠানিক শব্দ (লিনাক্সের জন্য, যাইহোক) available http://linux.die.net/man/7/signal তে একই তথ্য রয়েছে তবে টেবিলগুলি পড়া আরও শক্ত।
যাইহোক, সংকেতগুলির সাথে কিছু অভিজ্ঞতা ছাড়াই তারা অনুশীলনে কী করেন তা সংক্ষিপ্ত বিবরণ থেকে জানা শক্ত, সুতরাং এখানে আমার ব্যাখ্যাটি দেওয়া হল:
কীবোর্ড থেকে ট্রিগারড
SIGINTআপনি আঘাত যখন ঘটে CTRL+C।
SIGQUITদ্বারা ট্রিগার করা হয় CTRL+\, এবং মূল ডাম্প।
SIGTSTPআপনি আঘাত করলে আপনার প্রোগ্রাম স্থগিত করে CTRL+Z। বিপরীতে SIGSTOP, এটি ক্যাচযোগ্য, যা প্রোগ্রামগুলি viতাদের স্থগিতের আগে টার্মিনালটিকে নিরাপদ অবস্থায় পুনরায় সেট করার সুযোগের মতো করে gives
টার্মিনাল ইন্টারঅ্যাকশন
SIGHUP ("হ্যাঙ্গআপ") হ'ল যা হয় যখন আপনি আপনার প্রোগ্রামটি চলাকালীন আপনার এক্সটার্ম বন্ধ করে দেন (বা অন্যথায় টার্মিনালটি সংযোগ বিচ্ছিন্ন করে)।
SIGTTINএবং SIGTTOUযদি আপনার প্রোগ্রামটি পটভূমিতে চলার সময় টার্মিনাল থেকে পড়ার বা লেখার চেষ্টা করে তবে এটি থামান। হওয়ার জন্য SIGTTOU, আমি মনে করি প্রোগ্রামটি /dev/ttyকেবলমাত্র ডিফল্ট স্টাডাউটকে নয়, লেখার দরকার ।
সিপিইউ ব্যতিক্রম দ্বারা ট্রিগারড
এর অর্থ আপনার প্রোগ্রামটি কিছু ভুল করার চেষ্টা করেছে।
SIGILLঅর্থ একটি অবৈধ বা অজানা প্রসেসরের নির্দেশ। আপনি যদি প্রসেসর I / O পোর্টগুলি সরাসরি অ্যাক্সেস করার চেষ্টা করেন তবে এটি ঘটতে পারে, উদাহরণস্বরূপ।
SIGFPEমানে একটি হার্ডওয়ার গণিতে ত্রুটি ছিল; সম্ভবত প্রোগ্রামটি শূন্য দ্বারা ভাগ করার চেষ্টা করেছিল।
SIGSEGV এর অর্থ আপনার প্রোগ্রামটি মেমরির একটি আনম্যাপযুক্ত অঞ্চল অ্যাক্সেস করার চেষ্টা করেছে।
SIGBUSমানে প্রোগ্রামটি অন্য কোনও উপায়ে ভুলভাবে মেমরি অ্যাক্সেস করেছে; আমি এই সংক্ষিপ্তসার বিশদে বিশদে যাব না।
প্রক্রিয়া মিথস্ক্রিয়া
SIGPIPEপাইপের পাঠক তাদের শেষ বন্ধ করার পরে যদি আপনি কোনও পাইপে লেখার চেষ্টা করেন তবেই ঘটে। দেখুন man 7 pipe।
SIGCHLDযখন কোনও শিশু প্রক্রিয়া আপনি তৈরি করেন ত্যাগ করেন বা স্থগিত করা হয় (দ্বারা SIGSTOPবা অনুরূপ)।
স্ব-সংকেতের জন্য দরকারী
SIGABRTপ্রোগ্রামটি সাধারণত ফাংশনটিতে কল করার কারণে ঘটে থাকে এবং এটি abort()ডিফল্টরূপে একটি মূল ডাম্পের কারণ হয়। "প্যানিক বোতাম" বাছাই করুন।
SIGALRMalarm()সিস্টেম কল দ্বারা সৃষ্ট হয় , যার ফলে কার্নেলটি SIGALRMনির্দিষ্ট সেকেন্ডের পরে প্রোগ্রামে একটি সরবরাহ করতে পারে । দেখুন man 2 alarmএবং man 2 sleep।
SIGUSR1এবং SIGUSR2প্রোগ্রামটি পছন্দ হলেও ব্যবহৃত হয়। প্রক্রিয়াগুলির মধ্যে সংকেত দেওয়ার জন্য তারা কার্যকর হতে পারে।
প্রশাসক প্রেরিত
এই সংকেত সাধারণত কম্যান্ড প্রম্প্ট থেকে পাঠানো হয় মাধ্যমে killকমান্ড বা fgবা bgক্ষেত্রে SIGCONT।
SIGKILLএবং SIGSTOPঅবরুদ্ধযোগ্য সংকেতগুলি। প্রথম সর্বদা তাত্ক্ষণিকভাবে প্রক্রিয়াটি বন্ধ করে দেয়; দ্বিতীয়টি প্রক্রিয়া স্থগিত করে।
SIGCONT স্থগিত প্রক্রিয়া পুনরায় শুরু।
SIGTERMএর ক্যাচ করার যোগ্য সংস্করণ SIGKILL।