0

我在 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

4

2 回答 2

3

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

于 2012-06-21T17:20:23.970 回答
2

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

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

popen()也可能有帮助。

于 2012-06-21T17:22:38.157 回答