endprotoent#
סוגר את מסד נתוני הפרוטוקולים לאחר איטרציה.
endprotoent הוא המסיים של שלישיית האיטרציה getprotoent / setprotoent / endprotoent שסורקת את מסד נתוני הפרוטוקולים של המערכת (בדרך כלל /etc/protocols). הוא משחרר כל מטפל או מצב שספריית ה־C של המערכת השאירה פתוחים לאיטרציה. קוראים לו לאחר שהסריקה הסדרתית הסתיימה; getprotobyname ו־getprotobynumber אינם זקוקים לו - הם פותחים וסוגרים את מסד הנתונים בכל קריאה.
לא מקבל ארגומנטים, לא מחזיר דבר שימושי. זוהי עטיפה דקה מעל קריאת endprotoent(3) של המערכת.
תקציר#
endprotoent
מה מקבלים בחזרה#
אין ערך החזרה משמעותי. קריאתו בהקשר רשימה או סקלר מחזירה את הרשימה הריקה / שווה־ערך ל־undef; דבר שתרצה לבדוק. ערכו הוא תופעת־הלוואי של סגירת מסד נתוני הפרוטוקולים.
דוגמאות#
סריקת כל פרוטוקול, ואז סגירת מסד הנתונים:
setprotoent(1); # 1 = keep the file open between calls
while (my @p = getprotoent()) {
my ($name, $aliases, $proto) = @p;
print "$proto\t$name\n";
}
endprotoent();
קיצור באמצע־הסריקה - endprotoent עדיין סוגר נקייה:
setprotoent(0);
while (my @p = getprotoent()) {
last if $p[0] eq 'tcp';
}
endprotoent();
בשילוב עם חיפוש ישיר, endprotoent מיותר - חיפושים לפי שם ולפי מספר מנהלים את המצב שלהם:
my @tcp = getprotobyname('tcp'); # no endprotoent needed
מקרי קצה#
קריאה ללא
setprotoent/getprotoentקודם: לא מזיקה. קריאת המערכת אידמפוטנטית; סגירת מסד נתונים כבר־סגור היא no-op בכל פלטפורמה נתמכת.אין ארגומנטים מתקבלים:
endprotoent $xהיא שגיאת תחביר - לפונקציה המובנית יש אריות אפס.לא reentrant: מסד נתוני הפרוטוקולים הוא משאב יחיד גלובלי בתוך ספריית ה־C. שתי איטרציות מקבילות באותו תהליך דורכות זו על מצבה של זו. השתמש בסריקות לכל־thread או לכל־תת־תהליך אם דרושה לך מקבילות.
מוזרויות פלטפורמה: ההתנהגות היא מה ש־
endprotoent(3)של המערכת המארחת עושה. ראהperlportלרשימת הפלטפורמות שבהן שגרות מסד־הנתונים־של־הרשת מתפצלות או נעדרות לחלוטין.מוחלף בעקרון על פלטפורמות ללא
/etc/protocols: על מערכות שבהן לספריית ה־C אין מסד נתוני פרוטוקולים, הקריאה היא no-op ולא שגיאה.
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.
ראו גם#
setprotoent- פותח את מסד נתוני הפרוטוקולים ובאופן אופציונלי שומר אותו פתוח בין קריאותgetprotoent; שלב עםendprotoentכדי לתחום סריקהgetprotoent- קורא את הרשומה הבאה בזמן איטרציה; מניע את הלולאה ש־endprotoentמסייםgetprotobyname- חיפוש חד־פעמי לפי שם פרוטוקול; עצמאי, ללא צורך ב־endprotoentgetprotobynumber- חיפוש חד־פעמי לפי מספר פרוטוקול; אותה עצמאות משלישיית האיטרציהendservent- המסיים המקביל למסד נתוני השירותים; אותו ניב, טבלה שונהendhostent- המסיים המקביל למסד נתוני המארחים