在Unix和C中输出重定向

时间:2011-04-12 03:12:40

标签: c unix

我正在尝试使用system()命令在我的C程序中运行脚本。在main()内,我运行脚本并返回结果。如何将脚本的结果放在某个字符串中并检查条件?我知道我可以用文件来做,但想知道是否可以将结果放入字符串中。

示例如下:

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

3 个答案:

答案 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,它会为您提供一个文件句柄,您可以从中读取以获取程序的输出。

以下是一些可能有用的链接: