C 如何通过执行shell脚本获得多个值并在程序中使用相同的值?

C 如何通过执行shell脚本获得多个值并在程序中使用相同的值?,c,bash,shell,C,Bash,Shell,我希望通过执行shell脚本来获得系统的可用空间和总空间(以任何一个分区为例)。将它们存储到变量中,并在我当前的c程序中使用它们。 我的c代码是 #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { char uSpace[10],aSpace[10]; system("/home/a

我希望通过执行shell脚本来获得系统的可用空间和总空间(以任何一个分区为例)。将它们存储到变量中,并在我当前的c程序中使用它们。 我的c代码是

    #include <sys/types.h>
    #include <unistd.h>
    #include <stdio.h>

    int main()
    {
        char uSpace[10],aSpace[10];
            system("/home/amitk/projects/amit_bk/practice/space.sh");

        //to do: store the used space and available space into uSpace , aSpace and print them. 
    return 0;
}

假设我得到的结果是x=82MB,y=10Mb。所以我想把这些值存储到uSpace和aSpace中。我该怎么做?

在c代码中的/dev/sr0上调用stat()有什么问题?@oguzismail bt如何使用它并获取这两个值我看不出你会像我建议的那样将数据写入文件。如果要继续使用当前的shell脚本,则需要从脚本中读取标准输出。如果你想这样做,你必须像我告诉你的那样使用
fork
wait
。你可以找到一个方法来做这个。如果您通过一个文件来传输数据,可能会减少工作量,也更容易调试。您写道“现在可以将uSpace和aSpace变量的地址传递到shell中了”。不,那永远不可能。回想一下,基本的*nix流程模型是
父级->子级
,其中子级只能通过父级可以读取的std out(或写入文件)返回数据。子进程不能直接修改正在运行的父进程。(至少我是这样理解你的问题的)。链接aby@user1934428是一个不错的选择。祝你好运@user3559780:当然,正如shelllter所评论的,我们不能传递地址,但是如果子进程将数据写入文件,那么父进程可以将ís文件的相关部分读入数组
uSpace
aSpace
。我想这就是我最终想要实现的目标。
x=`df -h /dev/sr0| awk '{print $3}'`
sleep 1
echo $x
y=`df -h /dev/sr0| awk '{print $4}'`
sleep 1
echo $y