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дин чөйрөсүнө таасир этпейт.

Тандалган жүктөгүч бул өзгөрмөнү түшүнүшү керек. Бул мисал curlдин HTTPS суроосу үчүн кичине тамгалуу https_proxy колдонот жана мурас айланып өтүү киргизмелерин сактайт. Башка бала программанын башка прокси интерфейси болушу мүмкүн.

Тектеш макалалар