c - 如何将值从 shell 脚本传递到 C 程序

标签 c shell

我正在尝试使用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/

相关文章:

linux - Bash 不使用 ls 列出所有文件

shell - 为什么 netcat 不转储响应?

linux - 在多次 sed 运行中获取重复条目

bash - getopts 没有将指定的选项识别为有效

android - Android.mk中 "call"的 "LOCAL_PATH := $(call my-dir)"是什么?

在 Visual Studio 2010 中用 C 编译给出 MSVCRTD.lib(crtexew.obj) : error LNK2019

c - 关于 GRUB 的 main() 的查询

c - 当我从函数中更改它时,为什么 `src` 没有更改?

c - 纯文本文件或加密文件(C编程)

c - beej导流管实例讲解