سلام
من در برنامه خودم نیاز به خوندن برخی از لاگ های کرنل رینگ بافر دارم.(میخوام مثلا اگر x بین لاگ ها بود پرینت کنه ok)
چندتا روش از گوگل پیذا کردم:
یک سری ها میگفتن از tail dmesg استفاده کن
یک : فکر میکنم این روش خیلی غیرحرفه.
دو : باید از تایمر استفاده کنم تا هر چند دقیقه/ثانیه یک بار این دستور اجرا کنه. درصورتی که من به Real-time نیاز دارم.
سه : من فقط اخرین لاگ ایجاد شده رو میخوام, درصورتی که این دستور تمام لاگ هارو نشون میده(هرچند میشود بعد از خوندن لاگ از -cبرای clear log استفاده کرد(ولی من نمیخوام clear log انجام بشه)).
یک سری ها میگفتن /proc/kmsg یا /dev/kmsg استفاده کن:
خوندن /dev/kmsg که فرقی با خروجی dmesg نداره !
kmsg هم مشکلش این بود که اگر دو نفر همزمان درحال خوندنش باشن اطلاعات ناقص تحویل میده!
یک سری هاهم میگفتن سورس برنامه dmesg بخون ببین اون چطوری کار میکنه
بعد از کلی وقت گذاشتن, فهمیدم که از تابع klogctl استفاده میکنه, ولی متاسفانه من موفق نشدم پیاده سازیش کنم.
دوستان اگر راهی بهتری به ذهنشون میرسه لطفا بگن.
در ضمن(syslog هم ندارم که بخوام لاگ های syslog رو بخونم).