我有一个C ++应用程序,我希望应用程序始终使用source运行我的一个脚本。
我用过:
system("source myscript");
但它无效并且无法识别“source”命令。如果我省略“source”myscript将执行但是有源它不起作用。
在C ++中运行source命令有什么解决方案吗?
答案 0 :(得分:3)
您无法使用source
调用system
,因为它是shell-builtin而不是实际的可执行文件。
如果要获取shell脚本的变量,则必须以某种方式获取脚本中设置的变量。一种方法是编写一个包装脚本来源脚本,然后将所有导出的变量打印到stdout。然后,您的C程序可以调用包装器脚本,逐行迭代输出并将其每个环境变量设置为脚本输出的值(这假设包装脚本本身不产生任何输出)。
答案 1 :(得分:2)
source
是一个shell命令,而不是一个独立的程序。 source
在当前shell中执行shell脚本,允许该脚本访问当前环境中的shell变量和函数。
你的C ++程序不是shell,在你的c ++程序进程“内部”用完全不同的语言执行脚本是没有意义的。