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