我在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
答案 0 :(得分:4)
您需要(或至少希望)使用popen
代替system
。它不会将输出直接存储到字符串中 - 它为您提供了一个文件句柄,您可以从中读取子项的输出。可以使用类似fgets
之类的东西将数据从那里读入字符串。
答案 1 :(得分:2)
system()只会为您提供退出状态。
如果你想获得在STDOUT上打印的内容,你需要确保你有另一个文件描述符,你可以从中读取,并捕获此输出。通常,首先使用pipe()
命令(在fork
之前创建连接的描述符)然后dup(pipin, 0)
执行此操作以强制pipe()的输出之一成为子项的STDOUT过程
popen()
也可能有所帮助。