לתת לתהליך בן של QProcess את סביבת ה-proxy שלו
הגדירו את הסביבה שמועברת לתהליך בן אחד של Qt תוך שמירה על הערכים שהורשו ועדיין נדרשים לו.
עבור מוריד שמופעל דרך QProcess, בנו את סביבת הבן לפני ההפעלה:
auto* download = new QProcess(parent);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("https_proxy", "http://proxy.example:8080");
download->setProcessEnvironment(env);
download->start("curl", {"--head", "https://www.example.com/"});קטע Qt זה מניח שקיים אובייקט אב, לולאת אירועים ו-curl זמין לבן. השאירו את ה-QProcess חי כל עוד הוא פועל, וטפלו באותות הסיום והשגיאה שלו ביישום. לבדיקת אתר ציבורי זו ללא פרטי proxy מוגדרים, רשימת שרתי פרוקסי HTTP מציעה נקודות קצה HTTP מועמדות לערך ה-proxy של הבן.
התחלה מ-systemEnvironment משמרת ערכים שהורשו כמו PATH. בניית סביבה ריקה אחרת והוספת משתנה proxy אחד הייתה משמיטה את הערכים האחרים האלה.
שם המשתנה הוא המפתח. export הוא פקודת מעטפת, אינו חלק מהמפתח הזה ואינו קובץ הרצה ש-QProcess צריך להפעיל קודם. העברת הסביבה ישירות גם מונעת בניית פקודת מעטפת סביב ה-URL.
setProcessEnvironment חל על התהליך שיופעל לאחר מכן. הוא אינו משנה את הסביבה של בן שכבר פועל או של המעטפת שהפעילה את יישום ה-Qt.
המוריד שנבחר חייב להבין את המשתנה. דוגמה זו משתמשת ב-https_proxy באותיות קטנות עבור בקשת ה-HTTPS של curl ומשמרת קלטי עקיפה שהורשו. תוכנית בן אחרת יכולה להיות בעלת ממשק proxy אחר.