c - 如何使用 C (linux) 中的管道将 GCC 的输出保存在文件中?

标签 c linux gcc

在执行时,文件创建工作正常......但没有任何内容被写入其中......可以做什么......除了使用文件描述符之外还有其他方法吗......??

我尝试了以下代码:

    memset(buffer, '\0', sizeof(buffer));
    read_fp = popen("gcc test1.c", "r");
    //fp = fopen("/home/pranav/Desktop/b4.txt","w");
    fd = open("beejoutput2.txt", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IRGRP  |         S_IROTH);
    if (read_fp != NULL)
    {

        chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
        while (chars_read > 0)
        {

    /*writing to the file*/
        while ((bytesread = read(3, buffer, chars_read)) > 0) 
                write(fd, buffer, bytesread);

        buffer[chars_read-1] = '\0';
        printf("Reading %d:-\n %s\n", BUFSIZ, buffer);
        //fprintf(fp,"%d:-\n %s\n", BUFSIZ, buffer);
        chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
        }



    pclose(read_fp);
    exit(EXIT_SUCCESS);
    }
    //fclose(fp);
    exit(EXIT_FAILURE);
    return 0;
    }

最佳答案

错误信息会出现在 stderr 上,所以改变这个

read_fp = popen("gcc test1.c", "r");

对此

read_fp = popen("gcc test1.c 2>&1", "r");

关于c - 如何使用 C (linux) 中的管道将 GCC 的输出保存在文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23396390/

相关文章:

c++ - 循环提升仍然是 C 代码的有效手动优化吗?

c - 用 C 写入文件不起作用

linux - 为什么 "grep -w"匹配以 "."或 "$"结尾的字符串?

linux - bash 中前面注释的第一个参数的简写是什么?最后是 '$!'

c - gnu内联汇编错误

linux - 如何从linux api中已知的uid获取用户名?

c - 一道c编程题编译执行时报错

c++ - SHDeleteKey 和 RegDeleteTree 有什么区别?

C11 - 通用选择中的枚举

python - vim 在 linux 上加载 python