c编程如何将系统输出转换为char

时间:2015-03-15 11:09:53

标签: c terminal

我想知道是否有人可以帮助我:

我需要将系统命令的输出:whoami转换为变量。

示例:

char *a;
a = system("whoami");
printf("username = %s",a);

我尝试了一些方法,例如将命令输出打印到文本文件,如:whoami >> output.txt,而不是从该文件中读取程序,但是我遇到了通过该方法的错误。我也认为这种方法有点混乱和不必要,因为我肯定在C中必须有一种让我这样做的方法。

此问题可能重复,因此请在必要时进行标记(如果有能力,也请回答)

非常感谢:)

2 个答案:

答案 0 :(得分:1)

如果你想要的是在POSIX环境中读取环境变量,你可以简单地调用getenv: http://man7.org/linux/man-pages/man3/getenv.3.html

#include <stdlib.h>
#include <stdio.h>

int main() {
        char* username = getenv("USER");
        printf("username = %s\n", username);
        return 0;
}

如果你想要更复杂的东西,你可以使用popen: http://man7.org/linux/man-pages/man3/popen.3.html创建一个进程的管道并从stdout读取,这个答案在这种情况下应该有所帮助: C: Run a System Command and Get Output?

答案 1 :(得分:0)

This应该做到这一点。我自己还没有对它进行过测试,但我检查了它并列在Linux手册页中,所以我确定它是犹太洁食。