我正在尝试使用C语言中的system()调用shell脚本来修改文件并执行可执行文件并在另一个目录(而不是C工作目录)中获取一些输出。如何将shell脚本中的值传递给主C程序。提前谢谢!
#define shell "\
#/bin/bash \n\
cd home/path \n\
"input modification" \n\
./ exe \n\ #output a parameter b in the file out
b=$(cat <out) \n\
echo "b" \n\
"
void main()
{
system(shell);
printf("b=d%",b);
}
答案 0 :(得分:1)
第一个问题:
最好的方法是创建一个包含shell脚本的临时文件并执行它。例如,您可以通过 tmpnam
/ creat
创建来获取文件名,创建文件并打开它。然后,您必须使用shell脚本指令填充其内容,并在修改其执行权限后使用system
执行它(请参阅chmod
)。
第二个问题:
要从子进程接收数据,您需要通过写入/读取文件或使用管道来建立某种通信。可以使用popen
代替system
轻松建立管道。
最后,不要忘记删除所有临时对象。