Я пишу простой HTTP-сервер, и я получаю возвращаемое значение файла не существует, когда файл существует
printf("%s\n", html_path);
if ((fd = open(html_path, "r")) >= 0){ //file found
stat(file_name, &st);
file_size = st.st_size;
printf("%d\n", file_size);
while (read(fd, response, RCVBUFSIZE) > 0){
}
}
else { //file not found
strcpy(response, "404 File not found\n");
send(clntSocket, response, 32, 0);
}
оператор печати должен проверить путь, и он выглядит так:
/mounts/u-zon-d2/ugrad/kmwe236/HTML/index.html
обратите внимание, что этот путь находится на сервере, который мы используем в нашем университете. это путь, который показывает, когда я командую pwd
Я подтвердил, что файл существует. что-то не так с моим путем?
open? Если предполагается, что это системный вызовopen(2), то у него другой прототип, и вы должны написатьopen(html_path, O_RDONLY). Или, может быть, вы хотели использоватьfopen(3)? В любом случае, если это не удается, это не означает, что файл не существует: могут быть другие проблемы, например, у вас нет надлежащих прав доступа. Используйтеstrerror(3), чтобы распечатать фактическую причину ошибки. - person gudok   schedule 24.02.2016