Podarite podrejenemu procesu QProcess njegovo proxy okolje
Nastavite okolje, ki se preda enemu podrejenemu procesu Qt, in ohranite podedovane vrednosti, ki jih še potrebuje.
Za prenašalnik, zagnan prek QProcess, zgradite okolje podrejenega procesa pred zagonom:
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/"});Ta del Qt predpostavlja obstoječi nadrejeni objekt, zanko dogodkov in curl, ki je podrejenemu procesu dosegljiv. Ohranjajte QProcess živ, dokler teče, in v aplikaciji obravnavajte njegove signale dokončanja in napake. Za to preverjanje javnega spletnega mesta brez nastavljenih proxy poverilnic seznam proxyjev HTTP ponuja kandidatne končne točke HTTP za vrednost proxyja podrejenega procesa.
Začetek s systemEnvironment ohrani podedovane vrednosti, kot je PATH. Gradnja sicer praznega okolja in dodajanje ene proxy spremenljivke bi te druge vnose izpustila.
Ime spremenljivke je ključ. export je ukaz lupine, ni del tega ključa in ni izvedljiva datoteka, ki bi jo moral QProcess najprej zagnati. Neposredno posredovanje okolja se izogne tudi gradnji ukaza lupine okoli URL-ja.
setProcessEnvironment velja za proces, zagnan zatem. Ne spremeni okolja že delujočega podrejenega procesa ali lupine, ki je zagnala aplikacijo Qt.
Izbrani prenašalnik mora razumeti spremenljivko. Ta primer uporablja male črke https_proxy za zahtevo HTTPS curl in ohrani podedovane vhode za obhod. Drug podrejeni program ima lahko drug vmesnik proxy.