For en nedlaster som startes via QProcess, bygg barnets miljø før det startes:

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

Denne Qt-biten forutsetter et eksisterende foreldreobjekt, en hendelsesløkke og curl tilgjengelig for barnet. Hold QProcess i live mens den kjører, og håndter ferdig- og feilsignalene i programmet. For denne kontrollen av et offentlig nettsted uten konfigurerte proxy-påloggingsdata tilbyr listen over HTTP-proxyer mulige HTTP-endepunkter for barnets proxyverdi.

Å starte med systemEnvironment bevarer arvede verdier som PATH. Å bygge et ellers tomt miljø og legge til én proxyvariabel ville utelate de andre oppføringene.

Variabelnavnet er nøkkelen. export er en skallkommando, ikke en del av den nøkkelen og ikke en kjørbar fil som QProcess må starte først. Å sende miljøet direkte unngår også å bygge en skallkommando rundt URL-en.

setProcessEnvironment gjelder prosessen som startes etterpå. Den endrer ikke miljøet til et barn som allerede kjører, eller til skallet som startet Qt-programmet.

Den valgte nedlasteren må forstå variabelen. Dette eksempelet bruker små bokstaver i https_proxy for curls HTTPS-forespørsel og bevarer arvede omgåelsesinndata. Et annet barneprogram kan ha et annet proxygrensesnitt.

Relaterte artikler