Za program za preuzimanje pokrenut preko QProcess, izgradite okruženje djeteta prije pokretanja:

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

Ovaj Qt ulomak pretpostavlja postojeći roditeljski objekt, petlju događaja i curl dostupan djetetu. Držite QProcess živim dok radi i obrađujte njegove signale završetka i pogreške u aplikaciji. Za ovu provjeru javne stranice bez postavljenih proxy podataka za prijavu, popis HTTP proxyja nudi kandidatske HTTP završne točke za vrijednost proxyja djeteta.

Početak sa systemEnvironment čuva naslijeđene vrijednosti kao što je PATH. Izgradnja inače praznog okruženja i dodavanje jedne proxy varijable izostavilo bi te druge unose.

Ime varijable je ključ. export je shell naredba, nije dio tog ključa i nije izvršni program koji QProcess mora prvo pokrenuti. Izravno predavanje okruženja također izbjegava građenje shell naredbe oko URL-a.

setProcessEnvironment primjenjuje se na proces pokrenut nakon toga. Ne mijenja okruženje djeteta koje već radi ni ljuske koja je pokrenula Qt aplikaciju.

Odabrani program za preuzimanje mora razumjeti varijablu. Ovaj primjer rabi mala slova https_proxy za curl-ov HTTPS zahtjev i čuva naslijeđene ulazne podatke za zaobilaženje. Drugi program djeteta može imati drugo proxy sučelje.

Povezani članci