【问题标题】:store the output of the system() call to a variable将 system() 调用的输出存储到变量中
【发布时间】:2012-06-21 17:17:44
【问题描述】:

我在 C 程序中使用 system() 函数来获取字符串。但 system() 函数实际上显示输出并返回一个整数值(成功执行时为 0)。但我想要的是 system() 函数的输出必须存储到字符串变量中。例如:

char a[5];
a = system("echo \"hi\"");
printf("The string is: %s",a);

这种a存储值hi输出为The string is: hi的东西 请帮忙。提前致谢。运行平台:Linux

【问题讨论】:

标签: c linux terminal


【解决方案1】:

为此,您需要(或至少想要)使用popen 而不是system。它不会将输出直接存储到字符串中——它为您提供了一个文件句柄,您可以从中读取子节点的输出。可以使用 fgets 之类的东西将数据从那里读取到字符串中。

【讨论】:

    【解决方案2】:

    system() 只会为您提供退出状态。

    如果您想获得在 STDOUT 上打印的内容,您需要确保您有另一个可以读取的文件描述符,并捕获此输出。通常,您首先使用pipe() 命令(创建连接的描述符)在fork 之前执行此操作,然后使用dup(pipin, 0) 强制pipe() 的输出之一成为子进程的STDOUT。

    popen() 也可能有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2018-01-27
      • 2023-02-13
      • 2011-10-08
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多