根据我的问题,我无法通过Qt在Linux中执行“export”命令。
我尝试了QProcess,但它没有用。
实际上我需要在Linux OS中设置代理地址。 设置代理地址的命令是:
$ export http_proxy=http://proxy-server.mycorp.com:3128/
我想通过Qt执行此命令。我尝试使用QProcess,但它没有用。
我还尝试了here提到的QProcessEnvironment。
任何人都可以建议我更好地执行这个命令吗?
还有其他方法可以通过Qt在Linux上设置Proxy Server
任何想法/建议都将受到高度赞赏。
我使用的是Qt 4.7.4(无法根据公司政策切换到更高版本)
答案 0 :(得分:4)
export不是eucutable文件,Qt进程使用exec C函数,所以你不能这样做,你可以运行ls -l
但是导出,设置,你不能运行bash built-in
命令。你应该直接使用environ-variable
的C函数。如果您阅读man getenv
,则可以解决问题。
对于您的情况,您可以通过setenv C function
来完成。
答案 1 :(得分:0)
如上所述; export
不是可执行文件,而是内置 bash 命令。 exec
变体按其性质起作用,用新的过程映像替换当前过程映像。因此,您只能在可执行程序或进程上使用exec
变体。在 Unix / Linux 操作系统中,每个进程都有自己的环境变量。您可以通过阅读environ
变量来获取这些键值对,该变量在unistd.h
头文件中声明为extern
char**
指针-pointer变量。
环境变量由父进程创建的子进程继承。如果您使用setenv
/ putenv
函数在程序中创建新的环境变量,则只会在父中授予此新变量嵌套子进程直到它们退出或终止。如果您希望将这些变量设为永久变量,则需要在启动 shell脚本中设置它们。
在Linux系统中, bash 在显示之前运行以下脚本文件:
如果您将环境变量作为export key=value
命令嵌入到shell脚本中,该脚本将由 bash 启动,您的主程序将在顶层运行,您可以访问它们来自您的程序或终端本身。