"&" দিয়ে চলার সময় লিনাক্স টার্মিনালে সেগফল্ট আউটপুট অনুপস্থিত


5

আমি এমন একটি অ্যাপ্লিকেশন ডিবাগ করছি যা অন্যান্য উপাদানগুলির সাথে চলতে হবে। আমি একটি স্ক্রিপ্টে সবকিছু মোড়ানো করছি:

#!/bin/bash 
./component1 > 1.log & 
./my_application & 
./component2 > 2.log &

আমি টার্মিনালে আউটপুট দেখতে চাই তাই আমি এর আউটপুট পুনর্নির্দেশ করি নি my_application

দেখা গেল my_applicationএকটি সেগফল্ট ছিল। তবে আশ্চর্যের বিষয় হ'ল আউটপুট লাইন যা সেগমেন্টেশন ফল্ট তথ্য সম্পর্কে অভিযোগ করে তা আমার টার্মিনালে মুদ্রণ করছে না। যে খুব শেষ লাইন সহজভাবে অনুপস্থিত।

যদি আমি ./my_appliationঅন্য টার্মিনালে একা চলে যাই তবে আউটপুটটি ভাল কাজ করে। আমি "বিভাজন ত্রুটি" এর শেষ লাইনটি দেখছি

আমি যখন আমার অ্যাপ্লিকেশনটি চালাচ্ছি তখন কেন আমার আউটপুটটি অনুপস্থিত? আমি যদি কমান্ডের শেষে & যুক্ত করি তবে এটির কোন পার্থক্য নেই?

উত্তর:


1

"সেগমেন্টেশন ফল্ট" বার্তাটি সত্যই ./my_applitationশেল থেকে লেখা হয়নি ।

আপনি যখন &কোনও কমান্ডের পরে ব্যবহার করবেন , শেলটি এটি একটি সাব-শেলের পটভূমিতে চালাবে, আমি মনে করি। সাবশেলের স্ট্যাডার আউটপুটটি যা হারিয়ে যাচ্ছে।

আমি এখানে একই জিনিসটি নিশ্চিত করি:

$ cat >segf.c <<EOF
int main(int argc, char *argv[]){
char *p;
p=0;
printf("%d", *p);
}
EOF
$ make segf
$ bash -c "./segf"
Segmentation fault
$ bash -c "./segf &"
$

2
আপনার উদাহরণে একটি অতিরিক্ত বিবেচনা হ'ল, কারণ পিতামাতার প্রক্রিয়াটি চলে segfগেছে, এর পিতামাতারা হয়ে উঠেছে init। কিছু সিস্টেমে, যদি এটি এমন কোনও শিশুকে কাটাতে initপারে syslogযা সংকেত দ্বারা মারা গিয়েছিল তবে বেশিরভাগ ক্ষেত্রে তা ঘটে না; যাই হোক না কেন, মৃত প্রক্রিয়া শুরু হওয়া টার্মিনালে ব্যর্থতার রিপোর্ট করার কোনও উপায় নেই। এটি মূল প্রশ্নেরও হারিয়ে যাওয়া অংশ: স্ক্রিপ্টটি চালানো শেলটি বেরিয়ে গেছে, সুতরাং my_applicationএর পিতামাতা init
গাইকোসৌর

0

হতে পারে, কারণটি হ'ল। / কম্পোমেন্ট 1,। / মাই_এপ্লিকেশন,। / কম্পোনেন্ট 2 আপনার স্ক্রিপ্টে একই সাথে কার্যকর করে। যদি তারা আপনার সিস্টেমে একই ফাইল বা ডিভাইস ব্যবহার করে তবে সেগফল্ট উপস্থিত হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.