Jei atsisiuntėjas paleidžiamas per QProcess, sukurkite vaiko aplinką prieš jį paleisdami:

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/"});

Šis Qt fragmentas daro prielaidą, kad yra tėvinis objektas, įvykių ciklas ir vaikui prieinamas curl. Laikykite QProcess gyvą, kol jis veikia, ir tvarkykite jo užbaigimo bei klaidos signalus programoje. Šiam viešos svetainės patikrinimui be sukonfigūruotų tarpinio serverio prisijungimo duomenų HTTP tarpinių serverių sąrašo siūlomi kandidatiniai HTTP galiniai taškai vaiko tarpinio serverio reikšmei.

Pradėjus nuo systemEnvironment išsaugomos paveldėtos reikšmės, tokios kaip PATH. Sukūrus kitu atveju tuščią aplinką ir pridėjus vieną tarpinio serverio kintamąjį, tie kiti įrašai būtų praleisti.

Kintamojo pavadinimas yra raktas. export yra shell komanda, ne to rakto dalis ir ne vykdomasis failas, kurį QProcess turėtų paleisti pirmiausia. Aplinkos perdavimas tiesiogiai taip pat leidžia išvengti shell komandos kūrimo aplink URL.

setProcessEnvironment taikoma procesui, paleistam po to. Ji nekeičia jau veikiančio vaiko ar Qt programą paleidusio shell aplinkos.

Pasirinktas atsisiuntėjas turi suprasti šį kintamąjį. Šiame pavyzdyje naudojamas mažosiomis raidėmis rašomas https_proxy, skirtas curl HTTPS užklausai, ir išsaugomi paveldėti apėjimo įvesties duomenys. Kita vaiko programa gali turėti kitą tarpinio serverio sąsają.

Susiję straipsniai