当前位置: 技术问答>linux和unix
请问在c语言中嵌入shell的问题?
来源: 互联网 发布时间:2016-11-20
本文导语: 我想能过c语言来调用shell 我的方法的在c里用system()函数。可是有一个问题,退出之后,数据就失效了,无法保存。 具体程序如下: 下面是自己写的shell,就是想改变一下当前环境变量。 #!/bin/sh #test.sh export LANGA=zh...
我想能过c语言来调用shell
我的方法的在c里用system()函数。可是有一个问题,退出之后,数据就失效了,无法保存。
具体程序如下:
下面是自己写的shell,就是想改变一下当前环境变量。
#!/bin/sh
#test.sh
export LANGA=zh_CN.UTF-8
##echo "hello"
echo $LANGA
下面是c程序:
/* test.c */
#include
main()
{
system("/bin/sh test.sh");
system("echo $LANGA");
}
打印时,在shell里是有赋值的,可是退出system()之后就没有了,
请大哥们帮忙解决一下吧,或者有更好的通过c来改变类似环境变量值的方法也请教教小弟!
先谢谢了!
我的方法的在c里用system()函数。可是有一个问题,退出之后,数据就失效了,无法保存。
具体程序如下:
下面是自己写的shell,就是想改变一下当前环境变量。
#!/bin/sh
#test.sh
export LANGA=zh_CN.UTF-8
##echo "hello"
echo $LANGA
下面是c程序:
/* test.c */
#include
main()
{
system("/bin/sh test.sh");
system("echo $LANGA");
}
打印时,在shell里是有赋值的,可是退出system()之后就没有了,
请大哥们帮忙解决一下吧,或者有更好的通过c来改变类似环境变量值的方法也请教教小弟!
先谢谢了!
|
不可行
system()会创建一个新的子进程,在这个新的子进程中对环境变量的所有改变,都不可能影响父进程
system()会创建一个新的子进程,在这个新的子进程中对环境变量的所有改变,都不可能影响父进程
|
不能用来给父进程赋值