如何通过Qt在linux中执行“export”命令

时间:2013-10-30 07:01:35

标签: linux qt ubuntu qprocess

根据我的问题,我无法通过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(无法根据公司政策切换到更高版本)

2 个答案:

答案 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 在显示之前运行以下脚本文件:

  • 的/ etc /简档
  • 的/ etc / bashrc中
  • 〜/ .bash_profile中

如果您将环境变量作为export key=value命令嵌入到shell脚本中,该脚本将由 bash 启动,您的主程序将在顶层运行,您可以访问它们来自您的程序或终端本身。