برای یک دانلودر که از طریق 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 استفاده می‌کند و ورودی‌های عبور ارثی را حفظ می‌کند. یک برنامه فرزند دیگر می‌تواند رابط پروکسی دیگری داشته باشد.

مقالات مرتبط