"<অ্যাপ্লিকেশন> অপ্রত্যাশিতভাবে প্রস্থান করুন" sigquit বার্তাটি প্রতিরোধ করুন


12

আমি চাপ দিয়ে SIGQUIT সঙ্গে Python প্রসেস হত্যা জন্য ctrl \ কখনও কখনও (সাধারণত আমার নিজের যে misbehaving হয়)। আমি কি পাইথন অপ্রত্যাশিত ভাবে বন্ধ হয়ে যেতে পারি? আমি জানি আমি শুধু পালাতে পারি, তাই এটা খুব খারাপ না।

"Python quit unexpectedly." dialog


1
কেন আপনি কন্ট্রোল সি ব্যবহার করেন না? SIGTERM বার্তা কারণ না।
ughoavgfhw

@Ughoavgfw আমি একটি রেপিএলে কাজ করছি যা মাঝে মাঝে টার্মিনালটিকে কাঁচা মোডে রাখে, তাই আমার প্রোগ্রামটি ctrl-c পরিবর্তে একটি কীস্ট্রোক হিসাবে পায়। এছাড়াও কখনও কখনও আমার থ্রেড সমস্যা থাকে, যেমন থ্রেড যা মরতে পারে না, এবং পাইথন ctrl-c শুধুমাত্র প্রধান থ্রেডটি খোলার জন্য মনে হয়। (আমি জানি আমি ব্যবহার করা উচিত t.daemon = True এই উপর, এবং আমি অধিকাংশ অংশে) বিভিন্ন কারণে, কখনও কখনও আমি ctrl- \ ব্যবহার করতে হবে।
Thomas

যদি এটি আপনার কোড হয় তবে একটি ডেভেলপমেন্ট ইস্যু আপনার কোডকে সংকেতগুলির সাথে মোকাবিলা করতে হবে
Mark

@ মার্ক অ্যাগ্রিড - এটি একটি সমস্যা ছিল যখন আমি এখনও কিছু প্রান্তের ক্ষেত্রে এটি ব্যবহার করতে পারিনি।
Thomas

উত্তর:


13

আপনি যদি ক্র্যাশ রিপোর্ট ডায়ালগ দেখতে না চান তবে তাদের নিষ্ক্রিয় করার একটি পছন্দ রয়েছে:

defaults write com.apple.CrashReporter DialogType none

লগ আউট এবং পরিবর্তন প্রযোজ্য ফিরে।


2
লগ আউট আমার ক্ষেত্রে প্রয়োজন ছিল না।
Cory Klein

5
কি করার একটি উপায় আছে defaults write com.apple.CrashReporter DialogType none শুধুমাত্র একটি বিশেষ অ্যাপ্লিকেশন জন্য নির্বাচনীভাবে?
SexyBeast

5

আপনি পরিবর্তে একটি বার্তা হিসাবে বার্তা প্রদর্শিত করতে পারেন:

defaults write com.apple.CrashReporter UseUNC 1

2
এটার মত. ম্যাকোস সিয়েরাতে একটি বিজ্ঞাপনের ব্যানার স্ক্রিনের উপরের ডানদিকে স্লাইড হয়ে যায় এবং নিজের উপর অদৃশ্য হয়ে যায় তবে যদি আপনি এটি ক্লিক করেন তবে আপনি সম্পূর্ণ পূর্ণ ক্র্যাশ ডাম্প উইন্ডো পাবেন। তাই এই নিখুঁত। অনেক কম সংযত কিন্তু পাতা অপশন খোলা।
clearlight

3

SIGQUIT প্রাপ্ত করার সময় ডিফল্ট আচরণ কোর এবং প্রস্থান ডাম্প করা হয়; ক্র্যাশ প্রতিবেদক এই প্রক্রিয়ার একটি অংশ হিসাবে ট্রিগার করা হয়।

10.5 (?) দিয়ে শুরু করা সহজভাবে SIGQUIT এর জন্য একটি সিগন্যাল হ্যান্ডলার সেট করা ক্র্যাশ প্রতিবেদক এড়াতে যথেষ্ট হওয়া উচিত; আপনি সম্ভবত হ্যান্ডলার এছাড়াও প্রস্থান কল করতে চান।

import signal, sys, os

def sigquit_handler(signum, frame):
    print 'SIGQUIT received; exiting'
    sys.exit(os.EX_SOFTWARE)

signal.signal(signal.SIGQUIT, sigquit_handler)

# Do your normal work instead of this
print 'Waiting for a signal...'
signal.pause()

উপরে কোড 10.8.5 বিরুদ্ধে পরীক্ষিত হয় /usr/bin/python যা 2.7.2।


1
কি করার একটি উপায় আছে defaults write com.apple.CrashReporter DialogType none শুধুমাত্র একটি বিশেষ অ্যাপ্লিকেশন জন্য নির্বাচনীভাবে?
SexyBeast
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.