Dați unui copil QProcess mediul său proxy
Setați mediul transmis unui copil Qt păstrând valorile moștenite de care mai are nevoie.
Pentru un descărcător lansat prin QProcess, construiți mediul copilului înainte de lansare:
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/"});Acest fragment Qt presupune un obiect părinte existent, o buclă de evenimente și curl disponibil pentru copil. Mențineți QProcess în viață cât rulează și tratați semnalele sale de finalizare și de eroare în aplicație. Pentru această verificare a unui site public fără acreditări proxy configurate, lista de proxy-uri HTTP oferă puncte finale HTTP candidate pentru valoarea proxy a copilului.
Pornirea cu systemEnvironment păstrează valorile moștenite precum PATH. Construirea unui mediu altfel gol și adăugarea unei singure variabile proxy ar omite celelalte intrări.
Numele variabilei este cheia. export este o comandă de shell, nu face parte din acea cheie și nu este un executabil pe care QProcess ar trebui să îl lanseze mai întâi. Transmiterea mediului direct evită și construirea unei comenzi de shell în jurul URL-ului.
setProcessEnvironment se aplică procesului lansat după aceea. Nu modifică mediul unui copil care rulează deja sau al shell-ului care a lansat aplicația Qt.
Descărcătorul ales trebuie să înțeleagă variabila. Acest exemplu folosește https_proxy cu litere mici pentru cererea HTTPS a curl și păstrează intrările de ocolire moștenite. Un alt program copil poate avea altă interfață proxy.