A QProcess-szel indított letöltőhöz a gyermek környezetét az indítás előtt építse fel:

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

Ez a Qt-részlet meglévő szülőobjektumot, eseményhurkot és a gyermek számára elérhető curl-t feltételez. Tartsa életben a QProcess-t futás közben, és kezelje a befejezési és hibajelzéseit az alkalmazásban. Ehhez a nyilvános webhely-ellenőrzéshez, ahol nincs beállítva proxy-hitelesítő adat, a HTTP-proxyk listájából választható HTTP végpontok kínálkoznak a gyermek proxyértékéhez.

A systemEnvironment-nel kezdés megőrzi az örökölt értékeket, például a PATH-t. Egy egyébként üres környezet felépítése és egyetlen proxyváltozó hozzáadása kihagyná ezeket a többi bejegyzést.

A változó neve a kulcs. Az export egy shell-parancs, nem része ennek a kulcsnak, és nem is olyan futtatható program, amelyet a QProcess-nek előbb el kellene indítania. A környezet közvetlen átadása azt is elkerüli, hogy shell-parancsot építsünk az URL köré.

A setProcessEnvironment a később indított folyamatra vonatkozik. Nem változtatja meg egy már futó gyermek vagy a Qt-alkalmazást indító shell környezetét.

A választott letöltőnek értenie kell a változót. Ez a példa kisbetűs https_proxy-t használ a curl HTTPS-kéréséhez, és megőrzi az örökölt megkerülési bemeneteket. Egy másik gyermekprogramnak más proxyfelülete lehet.

Kapcsolódó cikkek