当前位置: 技术问答>linux和unix
shell和c之间的变量传递问题,请教!
来源: 互联网 发布时间:2015-05-30
本文导语: 想写个东西,主要用c和shell混合写,c调用shell,可不清楚怎么将shell得到的变量值传递给c程序,用system函数吗? | 如果是程序参数,那么liqi(sniper) 已经说的很明白了 如果是环境变量,你需要...
想写个东西,主要用c和shell混合写,c调用shell,可不清楚怎么将shell得到的变量值传递给c程序,用system函数吗?
|
如果是程序参数,那么liqi(sniper) 已经说的很明白了
如果是环境变量,你需要注意了。
你自己的程序是shell创建的一个子进程,会继承shell的环境参数,
但是临时的变量是不继承的。(比如说你用的bsh)
#export NAME0=ok
#NAME1=wrong
#{exec}
对与exec这个程序来说,NAME0他是具有的,而NAME1是不存在的。
对与一个已经存在的环境变量用一下函数取得
#include
char* getenv(const char* env_name)
如果是环境变量,你需要注意了。
你自己的程序是shell创建的一个子进程,会继承shell的环境参数,
但是临时的变量是不继承的。(比如说你用的bsh)
#export NAME0=ok
#NAME1=wrong
#{exec}
对与exec这个程序来说,NAME0他是具有的,而NAME1是不存在的。
对与一个已经存在的环境变量用一下函数取得
#include
char* getenv(const char* env_name)
|
main(int argc ,char **argv)
这是C的主函数,argc是命令行参数的个数,argv是命令行!
例:
myprogram arg1 arg2
在主函数中argc = 3
argv[0] = myprogram也就是你的程序名了
argv[1] = "arg1"
argv[2] = "arg2"
这是C的主函数,argc是命令行参数的个数,argv是命令行!
例:
myprogram arg1 arg2
在主函数中argc = 3
argv[0] = myprogram也就是你的程序名了
argv[1] = "arg1"
argv[2] = "arg2"
|
用System调用Shell,然后判断System的返回值,至于返回值的具体含义,你自己看man吧
|
支持passingguy的方法,简单方便,至于用文件交换数据有些小题大作了吧:)
|
楼主是不是问过这个问题?用popen执行shell脚本,脚本里用echo输出变量。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。