לדלג לתוכן

פתרון תוצאות הפעלה

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

fn main() {
    let code: i32 = std::env::args().nth(1).unwrap().parse().unwrap();
    std::process::exit(code);
}

משך ריצה נמדד באמצעות Instant לפני spawn ואחרי wait, אבל הדוח צריך לשמור גם שלב כשל. במקרה שבו spawn נכשל אין אובייקט Child לאסוף. במקרה שבו יצירת הילד הצליחה, שגיאה בכתיבת לוג אינה פוטרת אותנו מהמתנה או ממדיניות ביטול ואיסוף.

בפרוטוקול הצינור, היעדר נתונים עקב close-on-exec מציין הצלחת החלפה בהתאם לחוזה שבנינו. קוד 127 רגיל אינו יכול לשאת את אותה משמעות, משום שתוכנית משתמש חוקית יכולה לבחור להחזיר אותו. ההבחנה צריכה להיות בערוץ ובשלב הפעולה, ולא בערך שרירותי שנראה לנו נדיר.