【问题标题】:Add executable to PATH at run time在运行时将可执行文件添加到 PATH
【发布时间】:2022-01-03 03:15:07
【问题描述】:

我的目标是为 PATH 变量添加一个程序路径,以便程序的不同部分可以通过仅指定其名称来启动它,就像这样

int main()
{
    system("export PATH=%PATH%;/home/user/Workspace/myproject/build/bin/mybinary");
    system("echo $PATH");// <-- the PATH is changed

    //a far place in code
    system("mybinary"); // <-- this should run the executable, but it can't find it
    return 0;
}

这甚至可以做到吗?

【问题讨论】:

  • 使用setenv 设置环境变量。对于 Windows,它似乎是 _putenv

标签: c linux


【解决方案1】:

在 Linux 中,您可以使用 setenv()getenv() 来实现它,包含在标准库中。一个例子是:

int main () {
    char *path;
    
    path = getenv("PATH"); /* Gets current value of PATH */
    strcat(path, ":/path/to/binary"); /* Adds the new path at the end */
    
    if(setenv("PATH", path, 1)) { /* Override allowed as 3rd parameter is nonzero */
        /* Handle error */
    }
}

注意:正如in this post setenv() 所说,不能将变量导出到调用进程,只能导出到它自己和使用fork() 创建的任何新子进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2017-04-28
    相关资源
    最近更新 更多