Inotify

למי שאינו מכיר, iNotfy זו שיטה די חדשה שנוספה למערכת ההפעלה של לינוקס בגרסת הגרעין 2.6.13. השיטה באה להחליף שיטה ישנה יותר בשם dNotify.

התפקיד של שני הכלים הללו במרחב המשתמשים הוא להודיע מתי קובץ ו/או ספרייה בעצם השתנו בכל צורה שהיא, כדוגמת יצירה של קובץ, מחיקה שלו, שינוי שם, פתיחה לצורך קריאה, כתיבה שינוי שם וכיוב'…

dNotify היה די טוב ובהתחלה הוא נוסף בגרעין 2.4, אבל הגיע עם חסרון אחד מאוד בולט, לא היה ניתן להסיר עגינה של מערכת קבצים זו או אחרת כל עוד האזנת למה שיש לו להגיד, דבר שגרם להרבה בעיות.

iNotify בסופו של דבר עושה אותו הדבר, רק ההבדל העיקרי שלו זה שהוא לא משפיע על מצב עגינה של מערכות קבצים, ובכך ניתן להסיר באמצע ההאזנה את המערכת קבצים, ועדיין שום דבר רע לא יקרה. כמובן שישנם עוד שינויים כאלו ואחרים כדוגמת השימוש במתאר קובץ אחד בשביל להאזין לקבצים במקום מתאר קובץ לכל האזנה ועוד…
נכון למשפחת 2.6 dnotify נשאר רק מסיבות תאימות לאחור, אבל סומן כמיושן, ולכן כנראה שבגרסאות 2.8 לא נראה אותו יותר. אבל ידוע שברגע ש inotify בעצם התייצב, כל מי שהיה יכול עבר אליו מסיבות ברורות, ובכך רק תוכנות ללא המשך פיתוח או ללא תמיכה בinotify יפגעו.

במידה וצריך שיטה יוניקסית יותר לצפות במתרחש במערכות קבצים ישנה ספרייה בשם FAM מבית Sun או הספרייה שמחליפה אותה (עם תאימות API מלאה) בשם Gamin. ד"א ישנו קישור מלא לFPC עבור הספריות אשר אני עשיתי וניתן למצוא כאן.

בכל מקרה, כמו שסיפרתי לאחרונה, התחלתי לכתוב מודול לאסטריסק, אבל בגלל שC ואני לא אוהבים אחד את השני, אני צריך קודם ללמוד כל מיני דברים "פשוטים" ואני עושה מיני תוכניות אשר מלמדות אותי בסופו של דבר את מה שאני צריך. אז היות והמודול אשר אני רוצה לכתוב ישתמש ב inotify, החלטתי ללמוד לתכנת תוכנית שמאזינה לשיטה הזו של הודעות על שינוי הקבצים, ולכן יצרתי בC תוכנה קטנה שמדגימה כיצד ניתן לעשות את זה, כאשר ההדגמה בראש ובראשונה היתה עבורי 🙂

אז דבר ראשון, אני אבקש את סליחתכם בקוד הקשה שתראו שכתבתי עבור C, ודבר שני אני רוצה להודות לכמה אנשים אשר סייעו לי וחלקם אפילו היו מאוד מנומסים מול ההטרדות שלי בשאלות C טורדניות:

אז בראש ובראשונה, אני רוצה להודות לשלומי פיש, אשר הצליח לסבול אותי ושאלות כל כך "פשוטות" של איך עושים כמה דברים בC, למרות שבחלקן בסוף לא השתמשתי בקוד שתראו מעל, הוא עדיין עזר לי המון. כמו כן, נתתי לשלומי את האפשרות לצפות בתוצאה לפני שפרסמתי אותה ל"המונים", והוא עזר לי רבות בשיפצור שאתם רואים למעלה.
האדם השני שאני רוצה להודות לו זה צפריר כהן, שסבל אף הוא כמה שאלות C טורדניות, והיה מנומס וענה עליהן, וכמובן בנכונות לצפות בתוצאה לפני שנתתי לה"מונים" לראות, ולעשות עוד שיפצורים לקוד.

ותודה גם למני ליבנה על הנכונות לסבול שאלות ובעיקר קללות בנושא C 🙂
ואני רוצה גם להודות לעמי חיון על הערות שגרמו לשחרור הגרסה הזו שכרגע נמצאת באתר (0.1b) .
אז בפעם הבאה שאני אזכה באוסקר הרשימה תהיה ארוכה יותר 😉

מחשבה אחת על “Inotify

להשאיר תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת /  לשנות )

תמונת גוגל

אתה מגיב באמצעות חשבון Google שלך. לצאת מהמערכת /  לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת /  לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת /  לשנות )

מתחבר ל-%s

This site uses Akismet to reduce spam. Learn how your comment data is processed.