我正在尝试使用system()
命令在我的C程序中运行脚本。在main()
内,我运行脚本并返回结果。如何将脚本的结果放在某个字符串中并检查条件?我知道我可以用文件来做,但想知道是否可以将结果放入字符串中。
示例如下:
main()
{
system("my_script_sh"); // How can I get the result of the my_script_sh
}
答案 0 :(得分:5)
您无法使用系统命令。最好的办法是使用popen:
FILE *stream;
char buffer[150];
stream = popen("ls", "r");
while ( fgets(buffer, 150, stream) != NULL ){
// Copy the buffer to your output string etc.
}
pclose(stream);
答案 1 :(得分:0)
使用popen()
并将流读入char *
缓冲区。
答案 2 :(得分:0)
最简单的方法是从程序中取出system("my_script_sh")
并使用管道从shell调用程序 - 例如:my_script_sh | ./your_c_program
然后你的C程序只从stdin读取(文件描述符0)。
如果无法做到,请查看man 3 popen
。基本上,您使用popen
而不是system
,它会为您提供一个文件句柄,您可以从中读取以获取程序的输出。
以下是一些可能有用的链接: