Per a un descarregador llançat amb QProcess, construïu l'entorn del fill abans d'iniciar-lo:

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

Aquest fragment de Qt pressuposa un objecte pare existent, un bucle d'esdeveniments i curl disponible per al fill. Manteniu el QProcess viu mentre s'executa i gestioneu els seus senyals de finalització i d'error a l'aplicació. Per a aquesta comprovació d'un lloc públic sense credencials de proxy configurades, la llista de proxys HTTP ofereix punts de connexió HTTP candidats per al valor de proxy del fill.

Començar amb systemEnvironment conserva valors heretats com PATH. Construir un entorn buit i afegir-hi una sola variable de proxy ometria aquestes altres entrades.

El nom de la variable és la clau. export és una ordre d'intèrpret, no forma part d'aquesta clau ni és cap executable que QProcess hagi d'iniciar primer. Passar l'entorn directament també evita construir una ordre d'intèrpret al voltant de l'URL.

setProcessEnvironment s'aplica al procés que s'inicia després. No canvia l'entorn d'un fill que ja s'executa ni el de l'intèrpret que va llançar l'aplicació Qt.

El descarregador triat ha d'entendre la variable. Aquest exemple utilitza https_proxy en minúscules per a la sol·licitud HTTPS de curl i conserva les entrades d'omissió heretades. Un altre programa fill pot tenir una altra interfície de proxy.

Articles relacionats