C++ 如何使用c在Linux中获取系统代理设置

C++ 如何使用c在Linux中获取系统代理设置,c++,c,linux,C++,C,Linux,如何在linux中使用c或c++读取系统代理设置值getenv(“http\u proxy”)您正在查找此函数getenv(“http\u proxy”)系统代理设置通常存储在http\u proxy、HTTPS\u proxy等环境变量中 “C”允许我们通过向main()函数添加额外的参数envp来读取注册变量,如图所示 int main (int argc, char *argv[], char *envp[]) { char *http_proxy, *http

如何在linux中使用c或c++读取系统代理设置值
getenv(“http\u proxy”)
您正在查找此函数
getenv(“http\u proxy”)
系统代理设置通常存储在http\u proxy、HTTPS\u proxy等环境变量中

“C”允许我们通过向main()函数添加额外的参数
envp
来读取注册变量,如图所示

    int main (int argc, char *argv[], char *envp[])
    {
      char *http_proxy, *https_proxy;
      http_proxy = getenv("HTTP_PROXY");
      https_proxy = getenv("HTTPS_PROXY");
      printf ("Proxy settings :: %s on %s.\n", http_proxy, https_proxy);
      return 0;
    }

这应该根据您希望处理的变量来实现。系统代理设置通常存储在环境变量中,如HTTP\u proxy、HTTPS\u proxy等

“C”允许我们通过向main()函数添加额外的参数
envp
来读取注册变量,如图所示

    int main (int argc, char *argv[], char *envp[])
    {
      char *http_proxy, *https_proxy;
      http_proxy = getenv("HTTP_PROXY");
      https_proxy = getenv("HTTPS_PROXY");
      printf ("Proxy settings :: %s on %s.\n", http_proxy, https_proxy);
      return 0;
    }

这应该可以根据您希望处理的变量来实现。

我见过的大多数Linux发行版都没有“系统代理”的概念。在Linux上运行的桌面环境(KDE、Gnome等)通常具有设置代理的配置选项,大多数为该桌面编写的应用程序都可以访问该代理,但如何在代码中查找该代理将因运行的环境而异。此外,在Gnome下运行KDE应用程序或在Gnome下运行KDE应用程序可能不会得到相同的结果,除非两者都已正确配置。由于这一点以及其他一些原因,许多单独的应用程序都有自己的方式来设置代理。对某些应用程序有效的可能方法之一是其他答案中提到的环境变量(其他可能是各种配置文件,或连接到gconf之类的配置服务)。如果您正在编写一个新的应用程序,并且只希望能够在该应用程序中设置和使用代理,那么这种方法可能是最简单的方法之一。

我见过的大多数Linux发行版都没有“系统代理”的概念。在Linux上运行的桌面环境(KDE、Gnome等)通常具有设置代理的配置选项,大多数为该桌面编写的应用程序都可以访问该代理,但如何在代码中查找该代理将因运行的环境而异。此外,在Gnome下运行KDE应用程序或在Gnome下运行KDE应用程序可能不会得到相同的结果,除非两者都已正确配置。由于这一点以及其他一些原因,许多单独的应用程序都有自己的方式来设置代理。对某些应用程序有效的可能方法之一是其他答案中提到的环境变量(其他可能是各种配置文件,或连接到gconf之类的配置服务)。如果您正在编写一个新的应用程序,并且只希望能够在该应用程序中设置和使用代理,那么这种方法可能是最简单的方法之一。

http\u proxy环境变量使用了代理。我使用以下行获取代理设置char命令=(char)“gconftool-2-R/system/http\u proxy”;文件fpipe=(文件)popen(命令,“r”);字符行[256];而(fgets(line,sizeof(line),fpipe)){printf(“%s”,line);}pclose(fpipe);
http\u proxy
环境变量使用了代理;文件fpipe=(文件)popen(命令,“r”);字符行[256];而(fgets(line,sizeof(line),fpipe)){printf(“%s”,line);}pclose(fpipe);这很可能会将
https\u proxy
的值打印两次,因为
getenv()
可能会返回对静态内存的引用,该引用将被重用,因此在第二次调用时会被覆盖。getenv(“HTTP\u proxy”);在ubuntu中返回null。这很可能会将
https\u proxy
的值打印两次,因为
getenv()
可能会返回对静态内存的引用,该引用将被重用,因此在第二次调用时会被覆盖。getenv(“HTTP\u proxy”);在ubuntu中返回null。getenv(“http_代理”)在ubuntu中返回null。是否有任何其他选项。如果任何环境变量集都不匹配,则getenv函数将返回NULL。因此,请在shell上手动尝试env命令,并尝试查找您正在讨论的ubuntu系统是否设置了http_代理,或者notgetenv(“http_代理”)在ubuntu中是否返回null。是否有任何其他选项。如果任何环境变量集都不匹配,则getenv函数将返回NULL。因此,在shell上手动尝试env命令,并尝试查找您正在讨论的ubuntu系统是否设置了http_代理