2

根据我的问题,我无法通过 Qt 在 linux 中执行“导出”命令。

我尝试了 QProcess,但没有成功。

实际上我需要在 Linux 操作系统中设置代理地址。设置代理地址的命令是:

$ export http_proxy=http://proxy-server.mycorp.com:3128/

我想通过 Qt 执行这个命令。我尝试使用 QProcess,但没有成功。

我还尝试了这里提到的 QProcessEnvironment 。

任何人都可以建议我执行此命令的更好方法吗?

还有其他方法可以通过 Qt 在 Linux 上设置代理服务器吗?

任何想法/建议将不胜感激。

我正在使用 Qt 4.7.4(根据公司政策无法切换到更高版本)

4

2 回答 2

4

export 不是 eucutable 文件,Qt 进程使用 exec C 函数,所以你不能这样做,你可以运行ls -l,但是 export,set,你不能运行bash built-in命令。您应该直接将 C 函数用于environ-variable. 如果您阅读man getenv,您可以解决您的问题。

对于您的情况,您可以通过setenv C function.

于 2013-10-30T07:19:21.877 回答
0

正如刚才提到的; export不是可执行文件,它是内置的 bash命令。exec变体功能本质上是用新的过程映像替换当前的过程映像。因此,您只能exec在可执行程序或进程上使用变体。在Unix/Linux操作系统中,每个进程都有自己的环境变量。您可以通过读取变量来获取这些键值对,该变量在头文件中声明为指针到指针的变量。environunistd.hextern char**

环境变量由父进程创建的子进程继承。如果你使用/函数在你的程序中创建一个新的环境变量,这个新变量只会在你的进程和嵌套子进程中被授予,直到它们退出或终止。如果您想让这些变量永久化,您需要在启动shell 脚本中设置它们。setenvputenv

在 Linux 系统中,bash在出现之前会运行以下脚本文件:

  • /etc/profile
  • /etc/bashrc
  • ~/.bash_profile

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

于 2014-03-07T05:05:07.790 回答