QProcessin kautta käynnistettävälle lataajalle rakenna lapsen ympäristö ennen käynnistämistä:

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

Tämä Qt-katkelma olettaa olemassa olevan pääobjektin, tapahtumasilmukan ja lapselle saatavilla olevan curlin. Pidä QProcess elossa sen ajon ajan ja käsittele sen valmistumis- ja virhesignaalit sovelluksessa. Tässä julkisen sivuston tarkistuksessa, jossa välityspalvelimen tunnuksia ei ole määritetty, HTTP-välityspalvelinten luettelosta löytyy sopivia HTTP-päätepisteitä lapsen välityspalvelinarvolle.

systemEnvironmentista aloittaminen säilyttää perityt arvot, kuten PATH. Muuten tyhjän ympäristön rakentaminen ja yhden välityspalvelinmuuttujan lisääminen jättäisi ne muut merkinnät pois.

Muuttujan nimi on avain. export on komentotulkin komento, ei osa tuota avainta eikä ohjelma, jonka QProcessin pitäisi käynnistää ensin. Ympäristön välittäminen suoraan välttää myös komentotulkin komennon rakentamisen URL-osoitteen ympärille.

setProcessEnvironment koskee prosessia, joka käynnistetään sen jälkeen. Se ei muuta jo käynnissä olevan lapsen tai Qt-sovelluksen käynnistäneen komentotulkin ympäristöä.

Valitun lataajan on ymmärrettävä muuttuja. Tämä esimerkki käyttää pienikirjaimista https_proxy-muuttujaa curlin HTTPS-pyyntöön ja säilyttää perityt ohitusasetukset. Toisella lapsiohjelmalla voi olla toinen välityspalvelinrajapinta.

Aiheeseen liittyvät artikkelit