我想使用c代码从我的脚本中获取返回值。 考虑我的脚本在另一个分区,我正在安装该分区,我正在调用,
value=system("./mnt1/myscript.img");
我在myscript.img文件中需要一个函数,它应返回一个值(例如:mmcpart) 如何构建脚本以获取返回值。任何人都可以帮我解决这个问题。 提前谢谢。
答案 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);
}