存储system()调用变量的输出

时间:2012-06-21 17:17:45

标签: c linux terminal

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

2 个答案:

答案 0 :(得分:4)

您需要(或至少希望)使用popen代替system。它不会将输出直接存储到字符串中 - 它为您提供了一个文件句柄,您可以从中读取子项的输出。可以使用类似fgets之类的东西将数据从那里读入字符串。

答案 1 :(得分:2)

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

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

popen()也可能有所帮助。