2011-04-12 78 views
0

我想在我的C程序中使用system()命令运行脚本。在main()里面,我运行脚本并返回结果。我怎样才能把脚本的结果放在一些字符串中并检查条件?我知道我可以用文件做,但想知道是否可以把结果放入一个字符串中。输出重定向在Unix和C

样品将是这样的:

main() 
{ 
    system("my_script_sh"); // How can I get the result of the my_script_sh 
} 

回答

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); 
+0

感谢。将尝试popen。 – user629034 2011-04-12 18:49:04

0

使用popen()和读取流到一个char *缓冲。

0

那么做是采取system("my_script_sh")你的计划,并从有管壳调用程序的最简单的事情 - 如:my_script_sh | ./your_c_program,然后你的C程序只是从stdin(文件描述符0)中读取数据。

如果这是不可能的,那么看看man 3 popen。基本上,您使用popen而不是system,它为您提供了一个文件句柄,您可以从中读取该句柄以获取程序的输出。

这里有几个环节,可能是有用的: