Dar a un hijo de QProcess su entorno de proxy
Configure el entorno que se pasa a un hijo de Qt conservando los valores heredados que aún necesita.
Para un descargador lanzado mediante QProcess, construya el entorno del hijo antes de iniciarlo:
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/"});Este fragmento de Qt presupone un objeto padre existente, un bucle de eventos y curl disponible para el hijo. Mantenga vivo el QProcess mientras se ejecuta y gestione sus señales de finalización y de error en la aplicación. Para esta comprobación de un sitio público sin credenciales de proxy configuradas, la lista de proxies HTTP ofrece endpoints HTTP candidatos para el valor de proxy del hijo.
Empezar con systemEnvironment conserva valores heredados como PATH. Construir un entorno vacío y añadir una sola variable de proxy omitiría esas otras entradas.
El nombre de la variable es la clave. export es una orden de shell, no forma parte de esa clave ni es un ejecutable que QProcess deba lanzar primero. Pasar el entorno directamente también evita construir una orden de shell alrededor de la URL.
setProcessEnvironment se aplica al proceso que se inicia después. No cambia el entorno de un hijo que ya se está ejecutando ni el del shell que lanzó la aplicación Qt.
El descargador elegido debe entender la variable. Este ejemplo usa https_proxy en minúsculas para la solicitud HTTPS de curl y conserva las entradas de omisión heredadas. Otro programa hijo puede tener otra interfaz de proxy.