আপনি এবং এটি বেশ সহজ। আরপিআইতে একটি লিনাক্স মডিউল রয়েছে যা মানক লিনাক্স ওয়াচডগ এপিআই প্রয়োগ করে। আপনি এখানে এর নথিপত্র পেতে পারেন ।
এখন আপনি যদি এটি পড়ে থাকেন তবে আপনি জানতে পারবেন যে একটি বিশেষ ডিভাইস ফাইল রয়েছে /dev/watchdog
এবং এটি ব্যবহার করার জন্য watchdog
আপনাকে এই ফাইলটি খুলতে হবে এবং কিছু ডেটা লিখতে হবে (এক বাইট, 'ভি' বাদে অন্য কিছু লিখতে ভাল যা আমি ' আমি পরে ব্যাখ্যা করছি) সময়ে সময়ে। আপনি যদি এই ফাইলটিতে বেশি দিন কিছু না লিখেন তবে watchdog
একটি রিবুট ট্রিগার করবে। আপনি এখানে একটি উদাহরণ প্রোগ্রাম (খুব সহজ) খুঁজে পেতে পারেন ।
লক্ষ্য করুন একটি স্বাভাবিক অবস্থায়, যদি আপনি বন্ধ /dev/watchdog
, watchdog
প্রতিবন্ধী হতে পারে। 'ম্যাজিক ক্লোজ ফিচার' নামে একটি বিশেষ মোড রয়েছে যা এটি আরপিআই ড্রাইভার দ্বারা প্রয়োগ করা হয়েছে বলে মনে হয় তবে এএফআইএকি এটি ডিফল্ট কার্নেল কনফিগারেশনটিতে সক্ষম নয় (CONFIG_WATCHDOG_NOWAYOUT বিকল্প)। এই ক্ষেত্রে, /dev/watchdog
অ্যাপ্লিকেশনটি বন্ধ করার ঠিক আগে আপনি এটিতে 'ভি' না লিখলে বন্ধ করে দিলেও রিবুট ট্রিগার করা হবে।
এটি সত্যই অক্ষম থাকলে আপনার নিজের পরীক্ষা করা উচিত (পরীক্ষার জন্য আমার কাছে এখনই আরপিআই নেই) তবে এটি যদি না হয় তবে এটি আপনার পক্ষে ভাল নয়। যদি আপনার অ্যাপ্লিকেশন ক্রাশ হয়ে যায়, তবে ওয়াচডগ ডিভাইস ফাইলটি বন্ধ হয়ে যাবে এবং পুনরায় বুটটি ট্রিগার হবে না এবং এ কারণেই আপনি এটি চান। এই পরিস্থিতিতে, আপনি হয় কার্নেল কনফিগারেশন পরিবর্তন করে এটি পুনর্নির্মাণ করতে পারেন বা আপনার পছন্দসই অ্যাপ্লিকেশনটি লিখতে পারেন যা আপনার প্রধান অ্যাপ্লিকেশনটি কাজ করছে কিনা তা নিরীক্ষণ করতে চলেছে (উদাহরণস্বরূপ কিছু আইপিসি পদ্ধতি ব্যবহার করে)।
এছাড়াও আইওএসটিএল এপিআই রয়েছে যা আপনাকে আরও কিছু করার অনুমতি দেয় watchdog
। উদাহরণস্বরূপ, আপনি একটি পৃথক সময়সীমা নির্ধারণ করতে পারেন - ডাব্লুআইডিওসিওএসইটিটিমিওট (আইপিআই ড্রাইভার দ্বারা সমর্থিত বলে মনে হচ্ছে) বা টাইমআউট - ডাব্লুআইডিওসি_জেটটিমিওউটের সাথে আইওসিটিএল (যা সমর্থিত বলে মনে হয়) can আপনি এটি ডিফল্ট সময়সীমা (10 সেকেন্ড) সংশোধন করতে ব্যবহার করতে চাইতে পারেন। তবে 16 সেকেন্ডের হার্ড সীমা রয়েছে। এখানে একটি উদাহরণ:
int timeout = 15;
int fd = open("/dev/watchdog", O_WRONLY);
ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
আপনি চাইলে কোনও অক্ষর লেখার পরিবর্তে WDIOC_KEEPALIVE সহ আইওসিটিএলও ব্যবহার করতে পারেন। উভয় পদ্ধতিই বৈধ।