将Exec / System输出管道输出到C中的char *

时间:2012-01-25 22:16:39

标签: c

有没有办法让我通过我的C程序运行系统命令,例如日期,并将输出传递给char *日期,以便我以后可以使用它?我一直在尝试使用“系统”命令,但做系统(“日期”);立即打印出日期输出到标准输出。我想在我的程序中使用system或exec来获取这些数据。任何建议将不胜感激......

谢谢!

4 个答案:

答案 0 :(得分:2)

看看popen()。你用它打开一个FILE指针,如下所示:

#include <stdio.h>
FILE *f = popen("date", "r");

然后您可以使用fread()fscanf()f读取您选择的缓冲区。

答案 1 :(得分:1)

您可能需要popen()

它为你设置一切并做你想做的事

答案 2 :(得分:1)

您需要stdio.h中声明的函数popen。然后你可以像文件一样读取命令的输出。

答案 3 :(得分:1)

您可以使用以下代码段作为参考。

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

int main(void)
{
    FILE *fp;
    char *command="date";
    char line[256];

    if ((fp = popen(command, "r")) == NULL) {   
        perror("popen failed");
        return -1; 
    }   

    while (fgets(line, sizeof(line), fp))
        printf("%s", line);

    pclose(fp);
    return 0;
}