יציאה ממערכת ההפעלה Python

Yzy H Mm Rkt Hhp Lh Python



מודול מערכות ההפעלה של Python מציע מגוון כלים לשידור עם מערכת ההפעלה. מודול זה מציע שיטה מודולרית לשימוש בתכונה התלויה במערכת ההפעלה. שיטות שונות משמשות בשפת התכנות Python, ו'Python os exit' היא אחת מהן. באמצעות פונקציה זו, ניתן לסיים תהליך Python עם סטטוס מסוים מבלי להפעיל מטפלי ניקוי או שטיפה של מאגרים, לשם המחשה, עם קריאת מערכת 'os fork()', שבה פונקציה זו מנוצלת בדרך כלל בתהליך הילד.

פונקציית מחשב יכולה לסיים את ביצועה על ידי הפעלת קריאת יציאה למערכת במערכות הפעלה רבות של מחשבים. במערכת ריבוי השחלות, יציאה מסמלת לעתים קרובות את הפסקת חוט תפעולי. מערכת ההפעלה מאחזרת את המשאבים שכוללים קבצים וזיכרון, לניהול משאבים. אבל, אם נדבר על הסטנדרטי ליציאה, כנראה שזו תהיה שיטת 'sys.exit(n)'.







תחביר

התחביר של שיטת היציאה של Python OS ניתן להלן:




התחביר של שיטת היציאה של Python OS קובע שני דברים: החלק הראשון מייצג את מצב היציאה של התהליך, ומודול זה לא יחזיר שום ערך.



דוגמה מס' 1: שימוש בשיטת 'os._exit()' כדי לצאת מתהליכים מרובים מבלי להתקשר לאף מטפל ניקוי

ניתן להפעיל את שיטת היציאה בכל מערכת הפעלה, בעיקר במערכות הפעלה 'חלונות' או 'לינוקס'. בדוגמה הראשונה שלנו, נסתכל על מספר התהליכים המתרחשים כתהליך אב ותהליך צאצא, שבו הוא מבצע עיבוד מבלי לקרוא למטפל הניקוי בפונקציה או בתוכנית. מודול זה יעבוד בצורה יעילה יותר במערכת ההפעלה 'לינוקס'. ניקוי שרשור 'pop()' עם ערך שאינו אפס עבור הפרמטר execute גורם לקריאה למטפל הניקוי. כל הליכי הניקוי שנדחפו אך עדיין לא שוחררו מורחקים מחסנית התברואה ומבוצעים לפי סדר הכניסה והיציאה הראשונה (LIFO) כאשר השרשור נעצר, אך לא יהיה צורך לקרוא לזה בדוגמה זו.






קטע הקוד עבור הדוגמה הראשונה שלנו ליציאת Python OS מוסבר להלן:

התוכנית הוקמה על ידי ייבוא ​​הספרייה של 'os' מכיוון שאנו מודאגים לגבי ביצוע התנאים והתנאים לקישור למערכת ההפעלה של המכשיר שלנו. לאחר מכן יצרנו את 'PID' וקישרנו את 'Python' עם ספריית 'os'. כעת אנו משתמשים במשפט המותנה כאשר התנאי 'אם' הוא 'PID גדול מ-0'.



לאחר מכן, השתמשנו בפונקציה 'print()', שצריכה להדפיס את ההצהרה '\nProcessing in Parent', כאשר '\n' משמש להעברת הסמן לשורה החדשה בתנאי 'if'. המשתנה 'מידע' מאותחל לקריאה של 'os.waitpid(pid,0)', כאשר 'PID' מתחיל מרווח ה-'0'. בהמשך, החלנו תנאי 'אם' נוסף על ה-'os.WIFEXITED()', שבו הענקנו לו את תיאור המידע '1' לעיבודו. הוא מאחסן את מידע העיבוד שלו בפונקציה המוגדרת על ידי המשתמש של 'python_code', שמחזיקה בהצהרת ההדפסה של 'Child Code to be Exit' ומעניקה לו את הערך 'python_code' בתוך הפונקציה 'print()'.

כעת, אנו מגיעים למצב 'אחר' שלנו, שיש לו ארבע הצהרות מודפסות. ההצהרה בפונקציה הראשונה 'print()' היא 'עיבוד ב-Child'. הצהרת ההדפסה השנייה היא 'ID of Processing:' ועם זה, היא מכילה את הערך של 'os.getpid()', הפונקציה המכילה את קובץ הקוד של Python לעיבוד צאצא. הצהרת ההדפסה השלישית המשמשת כאן היא 'היי פייתון!!' והצהרת ההדפסה הרביעית היא 'עיבוד ילדים קיים!' לבסוף, יישמנו את המודול הראשי שלנו כדי לצאת מהעיבוד של הפעלת התוכנית של הקובץ הקיים שהוא 'os._exit()' ושבו המשתנה 'os.EX_OK' מוקצה מבלי להחזיר פונקציה כלשהי לעיבוד.


כמו עיבוד ילד הוא העדיפות להפעלה ראשונה וליציאה מהתוכנית מעיבוד האב כי זה דורש יותר זמן. אז תמונת המצב של הפלט מציגה את הצהרות ההדפסה שסיפקנו בקוד הקודם, אבל הקובץ שיצרנו במערכת מציג את מזהה העיבוד שלו, '78695', אותו נוכל לראות בתמונת המצב האחרונה. ואז, העיבוד של יציאת ההורה יהיה '0' מכיוון שהוא אפילו לא עובר עיבוד יסודי כי, עבור יותר, זה דורש את המטפל.

דוגמה מס' 2: שימוש בשיטת 'os._exit()' כדי לצאת מתהליך כללי ללא שטיפת חוצצים

בדוגמה זו, נסתכל על תופעת היציאה של ביצוע עיבוד כללי פשוט לאחר הפעלת מרווחי הקריאה שלו במערכת. כאן, אנחנו אפילו לא משתמשים במאגרי השטיפה מכיוון שהם לא נדרשים לעיבוד. אחרי הכל, 'os._exit' יעבוד בצורה יעילה יותר ליציאה מהתהליך.


הבה נסתכל על הקוד שבו ייבאנו את ספריית Python 'os'. התוכנית מתחילה ב-for-loop שבה אנו משתמשים במשתנה 'p' כדי להחזיק נתונים מסוימים ולהגדיר את הטווח שלו ל-'6'. לאחר מכן, החלנו את תנאי 'אם' על המשתנה 'p', אשר משווה את המרווחים הכוללים ל-'4'. כאשר מערכת העיבוד מתחילה מהאינדקס '0', היא תפעיל את התהליך מ- '0' ל- '4'. ברגע שהתנאי מקבל התאמה, שהוא הערך של 'p' הופך להיות שווה ל-4, התוכנית תבצע את ההצהרה הבאה, שהיא הפונקציה 'print()', ותספק ליחידת העיבוד 'יציאה'. בשורה האחרונה, השתמשנו בפונקציה 'os._exit()' כדי לצאת מהפונקציה לאחר שהתחלנו מ-'0' ואז עזבו את העיבוד. בסופו של דבר, כל הערכים שנשמרו במשתנה 'p' לאחר העיבוד יודפסו בתצוגת הפלט כפי שהשתמשנו בפונקציה 'print()' על ידי הקצאת המשתנה 'p' אליו.


תצוגת הפלט תציג רק את המספרים '0', '1', '2' ו- '3', מכיוון שאלו ארבעת המספרים שהגיעו לאחר העיבוד, ולאחר מכן, העיבוד יהיה יציאה.

דוגמה מס' 3: שימוש בשיטת 'os._exit()' כדי לצאת מתהליך שאינו קיים במאגר

לפעמים, אנו מנסים להעביר כמה תהליכים שלא היה קל למערכת לבצע את העיבוד או להפסיק מכל סיבה שהיא - בעיקר כאשר העיבוד נעדר עבור התוכנית הספציפית עקב קיומו של כל חומר, ספרייה או הקצאת קבצים ספציפיים .


הבה נסתכל על קטע הקוד שלנו שבו השתמשנו ב-'מספרים' כמשתנה והגדרנו אותו לנוע בין '0' ל- '7'. כעת, החלנו את התנאי 'אם' שבו 'מספרים' משתווים לאינדקס '5', ולאחר מכן השתמשנו במשפט 'print()' כדי להדפיס את הערך 'יציאה'. לאחר מכן, השתמשנו במודול ספציפי של 'raise SystemExit' כדי לצאת מעיבוד כמו 'os._exit' והשתמשנו שוב בפונקציה 'print()' כדי להציג את המספרים המאוחסנים במשתנה 'Numbers' לאחר יציאת התהליך.


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

סיכום

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