প্রথমে আপনার দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য: 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()
ডিফল্টরূপে একটি মূল ডাম্পের কারণ হয়। "প্যানিক বোতাম" বাছাই করুন।
SIGALRM
alarm()
সিস্টেম কল দ্বারা সৃষ্ট হয় , যার ফলে কার্নেলটি SIGALRM
নির্দিষ্ট সেকেন্ডের পরে প্রোগ্রামে একটি সরবরাহ করতে পারে । দেখুন man 2 alarm
এবং man 2 sleep
।
SIGUSR1
এবং SIGUSR2
প্রোগ্রামটি পছন্দ হলেও ব্যবহৃত হয়। প্রক্রিয়াগুলির মধ্যে সংকেত দেওয়ার জন্য তারা কার্যকর হতে পারে।
প্রশাসক প্রেরিত
এই সংকেত সাধারণত কম্যান্ড প্রম্প্ট থেকে পাঠানো হয় মাধ্যমে kill
কমান্ড বা fg
বা bg
ক্ষেত্রে SIGCONT
।
SIGKILL
এবং SIGSTOP
অবরুদ্ধযোগ্য সংকেতগুলি। প্রথম সর্বদা তাত্ক্ষণিকভাবে প্রক্রিয়াটি বন্ধ করে দেয়; দ্বিতীয়টি প্রক্রিয়া স্থগিত করে।
SIGCONT
স্থগিত প্রক্রিয়া পুনরায় শুরু।
SIGTERM
এর ক্যাচ করার যোগ্য সংস্করণ SIGKILL
।