QProcess զավակին տալ իր պրոքսի միջավայրը
Սահմանեք Qt զավակին փոխանցվող միջավայրը՝ պահպանելով ժառանգված արժեքները, որոնք նրան դեռ պետք են։
QProcess-ով գործարկվող ներբեռնիչի համար զավակի միջավայրը կառուցեք մինչև գործարկելը՝
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/"});Qt-ի այս հատվածը ենթադրում է գոյություն ունեցող ծնող օբյեկտ, իրադարձությունների ցիկլ և զավակին հասանելի curl։ Պահեք QProcess-ը կենդանի, քանի դեռ այն աշխատում է, և ծրագրում մշակեք դրա ավարտի ու սխալի ազդանշանները։ Այս հանրային կայքի ստուգման համար, առանց պրոքսի հավատարմագրեր սահմանելու, HTTP պրոքսիների ցանկից առաջարկվում են HTTP վերջնակետեր զավակի պրոքսի արժեքի համար։
systemEnvironment-ից սկսելը պահպանում է ժառանգված արժեքներ, ինչպիսին PATH-ն է։ Դատարկ միջավայր կառուցելը և մեկ պրոքսի փոփոխական ավելացնելը կբաց թողնի այդ մյուս գրառումները։
Փոփոխականի անունն է բանալին։ export-ը shell հրաման է, այդ բանալու մասը չէ և ոչ էլ գործարկվող ֆայլ, որը QProcess-ը պետք է նախ գործարկի։ Միջավայրն ուղղակիորեն փոխանցելը նաև խուսափում է URL-ի շուրջ shell հրաման կառուցելուց։
setProcessEnvironment-ը կիրառվում է դրանից հետո գործարկվող պրոցեսի վրա։ Այն չի փոխում արդեն աշխատող զավակի կամ Qt ծրագիրը գործարկած shell-ի միջավայրը։
Ընտրված ներբեռնիչը պետք է հասկանա փոփոխականը։ Այս օրինակը օգտագործում է փոքրատառ https_proxy curl-ի HTTPS հարցման համար և պահպանում է ժառանգված շրջանցման մուտքերը։ Մեկ այլ զավակ ծրագիր կարող է ունենալ այլ պրոքսի միջերես։