C文件读取不会停止

时间:2016-05-25 00:27:23

标签: c

我正在编写一个允许使用HTTP协议发送文件的简单服务器。我有一个函数,将文件中的所有内容放入缓冲区。 在阅读之前,一切顺利。正确打印文件大小。但是在阅读程序上等待。

char *get_file(char *dir) {
    fprintf(stderr, "GET FILE\n");
    char *buff;
    int fd;
    if (fd = open(dir, O_RDONLY) == -1) {
        fprintf(stderr, "No such file: %s\n", dir);
        exit(6);
    }

    size_t size = fsize(dir);

    fprintf(stderr, "OPENED FILE, SIZE: %ld\n", size);
    buff = malloc(size);
    read(fd, buff, size);

    fprintf(stderr, "to be downloaded: %s\n", buff);
    char *response = make_file_response(buff);
    return response;
}

1 个答案:

答案 0 :(得分:3)

您对此声明有疑问

==

首先评估运算符优先级fd,因此,if ((fd = open(dir, O_RDONLY)) == -1) /* ^~~~~~~~~~~~~~~~~~~~~~~~~^ */ 被赋予比较值而不是打开的文件描述符。

启用编译器警告时会建议使用括号,并且修正后的表达式为

open()

首先将fd的返回值分配给fd,然后执行比较。

如果您打印0的值,如果open()成功,则会看到-1。否则返回的值不是1 TotalFeedbackCount:gt:0 TotalPositiveFeedbackCount:gt:0 TotalNegotiveFeedbackCount:gt:0

相关问题