Я пишу простой сервер 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
Я подтвердил, что файл существует. что-то не так с моим путем?
Первое, что наблюдается: Возможно ли, что вы смешаете открытый и открытый? «r» будет соответствовать fopen, для открытия вы должны пройти O_RDONLY. –
Откуда у вас функция 'open'? Если предполагается, что это системный вызов 'open (2)', то он имеет другой прототип, и вы должны написать 'open (html_path, O_RDONLY)'. Или, может быть, вы хотели использовать 'fopen (3)'? В любом случае, если это не удается, это не означает, что файл не существует: могут быть другие проблемы, например, у вас нет надлежащих прав доступа. Используйте 'strerror (3)' для печати фактической причины ошибки. – gudok