我正在尝试使用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);
}
最佳答案
第一个问题:
最好的方法是创建一个包含 shell 脚本的临时文件并执行它。例如,您可以通过 tmpnam
/creat
创建它来获取文件名、创建文件并打开它。然后,您必须使用 shell 脚本指令填充其内容,并在修改其执行权限后使用 system
来执行它(请参阅 chmod
)。
第二个问题:
要从子进程接收数据,您需要建立一些通信,例如通过在文件中写入/读取,或使用管道。使用popen
代替system
可以轻松建立管道。
最后,不要忘记删除所有临时对象。
关于c - 如何将值从 shell 脚本传递到 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255126/