如何使用c代码

时间:2017-02-28 05:58:48

标签: c shell

我想使用c代码从我的脚本中获取返回值。 考虑我的脚本在另一个分区,我正在安装该分区,我正在调用,

value=system("./mnt1/myscript.img");

我在myscript.img文件中需要一个函数,它应返回一个值(例如:mmcpart) 如何构建脚本以获取返回值。任何人都可以帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在文件中编写shell脚本的输出,并从C程序中读取文件内容。

只有在shell脚本进程完成时,您的C程序才必须尝试读取文件,最好使用$? = 0。

您可以将shell脚本文件的名称放在.profile文件中,它将自动执行您的shell脚本。

Shell脚本编程拥有强大的文件处理命令,写入文件应该不是问题。

不确定为什么使用** tee **命令。您是否希望将输出发送到STDOUT?

答案 1 :(得分:0)

您真正需要的是一个管道,然后是fork和execvp,您可以在其中执行脚本。这样的事情对你有用

    int mypipe[2];
    if(pipe(mypipe) == -1) {
      perror("Pipe creation failed");
      exit(1);
    }

    if(fork() == 0)            //first fork
    {
        close(STDOUT_FILENO);  //closing stdout
        dup(mypipe[1]);         //replacing stdout with pipe write
        close(mypipe[0]);       //closing pipe read
        close(mypipe[1]);

        const char* myprog[] = { "ps", "-ef", 0};
        execvp(myprog[0], myprog);
        perror("error in execvp for ps command");
        exit(1);
    }

    char str[200];
    FILE* fp = fdopen(mypipe[0], "r");

    while (fgets(str, 200, fp) != 0) {
            printf("%s\n", str);
    }