QProcess ကလေးအား ၎င်း၏ proxy ပတ်ဝန်းကျင် ပေးခြင်း
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 လည်ပတ်နေစဉ် အသက်ရှင်ထားပြီး ၎င်း၏ ပြီးစီးမှုနှင့် အမှားအချက်ပြများကို အပလီကေးရှင်းတွင် ကိုင်တွယ်ပါ။ proxy အထောက်အထား မသတ်မှတ်ဘဲ ပြုလုပ်သော ဤအများပြည်သူ ဆိုက်စစ်ဆေးမှုအတွက် HTTP proxy စာရင်းမှ ကလေး၏ proxy တန်ဖိုးအတွက် သင့်လျော်သော HTTP အဆုံးမှတ်များ ရရှိနိုင်သည်။
systemEnvironment မှ စတင်ခြင်းသည် PATH ကဲ့သို့ အမွေဆက်ခံတန်ဖိုးများကို ထိန်းသိမ်းသည်။ မဟုတ်ဘဲ အလွတ်ပတ်ဝန်းကျင် တည်ဆောက်ပြီး proxy ကိန်းရှင်တစ်ခု ထည့်ပါက ထိုအခြားအချက်များ လွတ်သွားမည်။
ကိန်းရှင်အမည်သည် သော့ဖြစ်သည်။ export သည် shell အမိန့်ဖြစ်ပြီး ထိုသော့၏ အစိတ်အပိုင်းမဟုတ်၊ QProcess ဦးစွာ လည်ပတ်ရမည့် လုပ်ဆောင်နိုင်သည့်ဖိုင်လည်း မဟုတ်ပါ။ ပတ်ဝန်းကျင်ကို တိုက်ရိုက် ပေးပို့ခြင်းသည် URL ပတ်လည်တွင် shell အမိန့် တည်ဆောက်ခြင်းကိုလည်း ရှောင်ရှားသည်။
setProcessEnvironment သည် နောက်မှ စတင်သော လုပ်ငန်းစဉ်အတွက် သက်ရောက်သည်။ ၎င်းသည် လည်ပတ်နေပြီးသား ကလေး သို့မဟုတ် Qt အပလီကေးရှင်းကို စတင်ခဲ့သော shell ၏ ပတ်ဝန်းကျင်ကို မပြောင်းလဲပါ။
ရွေးချယ်ထားသော ဒေါင်းလုဒ်ဆွဲသူသည် ဤကိန်းရှင်ကို နားလည်ရမည်။ ဤဥပမာသည် curl ၏ HTTPS တောင်းဆိုချက်အတွက် စာလုံးအသေးဖြင့် https_proxy ကို အသုံးပြုပြီး အမွေဆက်ခံသော ရှောင်ကွင်းထည့်သွင်းချက်များကို ထိန်းသိမ်းသည်။ အခြား ကလေးပရိုဂရမ်တွင် အခြား proxy အင်တာဖေ့စ် ရှိနိုင်သည်။