আমি এমন একটি অ্যাপ্লিকেশন ডিবাগ করছি যা অন্যান্য উপাদানগুলির সাথে চলতে হবে। আমি একটি স্ক্রিপ্টে সবকিছু মোড়ানো করছি:
#!/bin/bash
./component1 > 1.log &
./my_application &
./component2 > 2.log &
আমি টার্মিনালে আউটপুট দেখতে চাই তাই আমি এর আউটপুট পুনর্নির্দেশ করি নি my_application
।
দেখা গেল my_application
একটি সেগফল্ট ছিল। তবে আশ্চর্যের বিষয় হ'ল আউটপুট লাইন যা সেগমেন্টেশন ফল্ট তথ্য সম্পর্কে অভিযোগ করে তা আমার টার্মিনালে মুদ্রণ করছে না। যে খুব শেষ লাইন সহজভাবে অনুপস্থিত।
যদি আমি ./my_appliation
অন্য টার্মিনালে একা চলে যাই তবে আউটপুটটি ভাল কাজ করে। আমি "বিভাজন ত্রুটি" এর শেষ লাইনটি দেখছি
আমি যখন আমার অ্যাপ্লিকেশনটি চালাচ্ছি তখন কেন আমার আউটপুটটি অনুপস্থিত? আমি যদি কমান্ডের শেষে & যুক্ত করি তবে এটির কোন পার্থক্য নেই?
segf
গেছে, এর পিতামাতারা হয়ে উঠেছেinit
। কিছু সিস্টেমে, যদি এটি এমন কোনও শিশুকে কাটাতেinit
পারেsyslog
যা সংকেত দ্বারা মারা গিয়েছিল তবে বেশিরভাগ ক্ষেত্রে তা ঘটে না; যাই হোক না কেন, মৃত প্রক্রিয়া শুরু হওয়া টার্মিনালে ব্যর্থতার রিপোর্ট করার কোনও উপায় নেই। এটি মূল প্রশ্নেরও হারিয়ে যাওয়া অংশ: স্ক্রিপ্টটি চালানো শেলটি বেরিয়ে গেছে, সুতরাংmy_application
এর পিতামাতাinit
।