如何将多个值从C程序传递到shell脚本

如何将多个值从C程序传递到shell脚本,c,shell,process,environment-variables,C,Shell,Process,Environment Variables,我有一个shell脚本,它执行一些基本函数,并使用每个操作的特定命令行参数调用c程序 C程序返回表示成功或失败的整数值 现在我遇到了一种情况,c程序需要耦合多个值,并且需要由父脚本访问。有没有办法做到这一点?[除了将值存储在临时文件中以及脚本访问该文件以获取值之外]您可以使用excecl命令 int execl(const char *path, const char *arg, ...); 像这样: #include <stdio.h> #include <unistd.h

我有一个shell脚本,它执行一些基本函数,并使用每个操作的特定命令行参数调用c程序

C程序返回表示成功或失败的整数值


现在我遇到了一种情况,c程序需要耦合多个值,并且需要由父脚本访问。有没有办法做到这一点?[除了将值存储在临时文件中以及脚本访问该文件以获取值之外]

您可以使用
excecl
命令

int execl(const char *path, const char *arg, ...);
像这样:

#include <stdio.h>
#include <unistd.h>
#include <dirent.h>

void main () {

   return execl ("/bin/pwd", "pwd", NULL);

}
#包括
#包括
#包括
空干管(){
返回execl(“/bin/pwd”,“pwd”,NULL);
}

是的,看看exec系统调用,有多个函数可以帮助您实现这一点,但基本上您可以执行一个c程序并传递所有想要/需要的参数


让您的C程序将值写入其
stdout
,并使用命令替换shell功能在父脚本中捕获这些值,如下所示:

program_output=$(your_c_program with the arguments it needs)

manbash
(并搜索命令替换)以了解详细信息。

如果逻辑允许,可以使用管道共享示例输入和输出,以便读者了解您试图解决的问题基本上shell脚本是调用C程序的父脚本。相反,假设您的可执行文件名为main,您希望将以下参数传递给它:arg1、arg2和arg3。您可以通过在shell中键入来完成此操作:./main arg1 arg2 arg3可能是我的问题有点混乱。让我举个例子。假设我有一个脚本test1.sh,从中调用可执行文件exe1。这个exe1(c程序)将得到一些值,比如val1和val2。这些值应该返回到脚本test1.sh,以便我可以继续对val1和val2执行其他操作。