linux - 如何在 c 中运行 sh 文件并导出变量

标签 linux bash shell export

我试图在 c 中读取导出的变量,但我不能,有两种情况。

A)

1) 我有一个像这样的 sh 文件:

#!/bin/bash
timeout 3s ./program
export OUT=$?

2) 然后我运行:。文件.sh

3) 当我用 c 读取 var 时:

getenv("OUT") 是的,我读过了。

B)

  1. 在 c:system("/bin/bash -c '.PathOfFile/file.sh'");

  2. getenv("OUT") 。我无法访问 OUT

我需要在 c 中运行 sh 文件并在 c 中读取 var

谢谢

最佳答案

POSIX 中的环境由新进程(由 fork 创建)即子进程继承。但是,当您更改子进程中的环境并且该进程结束时,除了子进程的退出代码之外,没有任何东西可以保存环境或导致父进程获取任何信息。如果你想从子进程中保存一些东西,你必须使用某种形式的 IPC 来实现,从将它保存在一个文件中到使用套接字或内存缓存。

关于linux - 如何在 c 中运行 sh 文件并导出变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24878928/

相关文章:

linux - Crontab - 简单回声未运行

bash - Bash中 "export"是什么意思?

linux - Bash 脚本 : Read a file and process it

bash ->>& 在 tcsh 脚本中是什么意思,它如何转换为 bash?

linux - 我的 bash 脚本在终止命令后不会执行命令

bash - 从 bash 中的行中提取两个子字符串,然后将它们连接起来

linux - 如何在 linux 上编译以便生成的可执行文件不需要共享库

linux - 我们如何在 Linux 内核的第 2 层(使用 MAC 地址)发送/接收帧

c++ - 在 Linux 上运行的 C++ 程序中为函数计时

linux - 运行脚本中的权限被拒绝