如何在C ++中运行“source”命令

时间:2012-06-30 08:33:02

标签: c++ shell

我有一个C ++应用程序,我希望应用程序始终使用source运行我的一个脚本。

我用过:

system("source myscript");

但它无效并且无法识别“source”命令。如果我省略“source”myscript将执行但是有源它不起作用。

在C ++中运行source命令有什么解决方案吗?

2 个答案:

答案 0 :(得分:3)

您无法使用source调用system,因为它是shell-builtin而不是实际的可执行文件。

如果要获取shell脚本的变量,则必须以某种方式获取脚本中设置的变量。一种方法是编写一个包装脚本来源脚本,然后将所有导出的变量打印到stdout。然后,您的C程序可以调用包装器脚本,逐行迭代输出并将其每个环境变量设置为脚本输出的值(这假设包装脚本本身不产生任何输出)。

答案 1 :(得分:2)

source是一个shell命令,而不是一个独立的程序。 source在当前shell中执行shell脚本,允许该脚本访问当前环境中的shell变量和函数。

你的C ++程序不是shell,在你的c ++程序进程“内部”用完全不同的语言执行脚本是没有意义的。