بالنسبة إلى برنامج تنزيل يُشغَّل عبر 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 حيًّا أثناء عمله، وعالِج إشارات اكتماله وأخطائه في التطبيق. ولأن هذا الفحص لموقع عام يجري دون ضبط بيانات اعتماد للبروكسي، فإن قائمة وكلاء HTTP تقدّم نقاط نهاية HTTP مرشّحة لقيمة البروكسي في العملية التابعة.

البدء من systemEnvironment يحافظ على القيم الموروثة مثل PATH. أما بناء بيئة فارغة وإضافة متغيّر بروكسي واحد فسيُسقط تلك المدخلات الأخرى.

اسم المتغيّر هو المفتاح. إن export أمر من أوامر الصدفة، وليس جزءًا من ذلك المفتاح ولا برنامجًا قابلًا للتنفيذ يجب أن يشغّله QProcess أولًا. كما أن تمرير البيئة مباشرة يتجنّب بناء أمر صدفة حول عنوان URL.

يُطبَّق setProcessEnvironment على العملية التي تبدأ بعده. ولا يغيّر بيئة عملية تابعة تعمل بالفعل ولا بيئة الصدفة التي شغّلت تطبيق Qt.

يجب أن يفهم برنامج التنزيل المختار هذا المتغيّر. يستخدم هذا المثال https_proxy بحروف صغيرة من أجل طلب HTTPS في curl، ويحافظ على مدخلات التجاوز الموروثة. ويمكن لبرنامج تابع آخر أن يمتلك واجهة بروكسي أخرى.

مقالات ذات صلة