【发布时间】:2013-09-16 00:41:41
【问题描述】:
我有一个 C 程序,最后有以下代码:
memcpy(buff,"TEST=",4)
putenv(buff)
system("/bin/bash")
我将一个新的环境变量放入一个新的 shell 中。然后我想将测试回显到我可以轻松完成的文本文件中。然后我想退出 shell 并再次运行它,所以运行它看起来如下
./cprog "some arg"
echo $TEST > test.txt
exit
./cprog "some arg"
echo $TEST > test.txt
exit
我必须继续退出,这样我才能更改 TEST 变量。如何在 shell 脚本中完成这项工作,这样我就可以继续循环并运行 c 程序,这样我就可以更改参数但永远不会退出 shell 脚本本身。
【问题讨论】:
-
第一个
memcpy应该做什么?就目前而言,它将 4 个字符TEST复制到buff。 -
您的问题不清楚。为什么要从程序内部启动一个额外的外壳?您谈论更改 TEST 变量,但不说您如何更改它。您的 memcpy 长度错误,并且您从未为 TEST 分配值。
-
buff 里面已经有东西了,我在前面加了应该是 5 对不起
-
程序不能改变控制shell的环境。
-
如果我不启动额外的 shell,当我回显它时该变量为空。
标签: c bash shell environment-variables