Дайте на дъщерен процес на 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 е команда на обвивката, не е част от този ключ и не е изпълним файл, който QProcess трябва да стартира първо. Директното предаване на средата също избягва изграждането на команда на обвивката около URL адреса.
setProcessEnvironment се прилага за процеса, стартиран след това. Той не променя средата на вече работещ дъщерен процес или на обвивката, която е стартирала приложението Qt.
Избраната програма за изтегляне трябва да разбира променливата. Този пример използва малки букви https_proxy за HTTPS заявката на curl и запазва наследените входни данни за заобикаляне. Друга дъщерна програма може да има друг прокси интерфейс.