将环境变量传递给已启动的进程bash脚本
Passing the environment variables to the launched process bash script
在linux下,我有一个bash脚本,它启动一个c++程序二进制文件。我需要做的是在该脚本中设置一个环境变量,并访问该变量在启动的c++程序中使用getenv
.
#!/bin/bash
export SAMPLE_VAR=1
./c++_binary
c++程序:
char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var setn");
然而,这似乎不起作用。从我的理解是,当我们执行脚本时,它将在一个新的子shell中运行,并在那里设置环境变量SAMPLE_BAR,但是c++二进制文件也是在同一子shell中启动的(可能我在这里错了),所以它应该可以访问SAMPLE_VAR。我甚至尝试编写一个单独的脚本,只设置env变量,在主脚本中,我将该脚本称为source env_var_set.sh
,但无济于事。
是否可以将新设置的环境变量以这种方式传递给程序?由于
由于将评论标记为回答的功能请求仍然被拒绝,因此我复制了上面的解决方案。
啊,对不起的拼写错误,和我的错误,在脚本中,我用'sudo'启动二进制文件,它在root的环境中运行,没有设置变量。删除sudo,它工作得很好。很抱歉造成了混乱。欢呼。阿卜杜拉-
首先,您需要source
您的shell脚本,以便设置env
变量。第二,在getenv
呼叫中包含引号。
char * env_var = getenv("SAMPLE_VAR");
if (env_var != NULL) printf("var setn");
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- 将bash参数传递给c++
- c++多进程编写一个唯一的文件
- 在 Bash 脚本中处理来自子进程的信号
- 如何使用 std::in 和 getline() 检测后台进程中从 bash 注入的输入
- 如何将我的 cli 信息(变量等)共享到子进程,这是一个 bash shell 脚本
- Bash:获取子进程名称
- 进程重定向可以在bash中同步吗
- 为什么 bash 在进程死后不打印"Broken pipe"日志?
- 在 bash 中获取进程的退出状态
- C++执行bash脚本,该脚本终止并重新启动当前进程
- Linux-有没有一种方法可以在不分叉新进程的情况下调用系统调用(bash脚本)
- 将环境变量传递给已启动的进程bash脚本
- C++访问由 Bash 进程替换创建的"虚拟文件"
- Qt QProcess startDetached 无法结束进程(bash 会话)