Почему-то не работает следующий коротенький пример работы с sendfile
nt main(int argc, char **argv) { int src; /* дескриптор исходного файла */ int dest; /* дескриптор файла назначения */ struct stat stat_buf; /* сведения об исходном файле */ off_t offset = 0; /* смещение от начала исходного файла */
/* проверить -- существует ли исходный файл и открыть его */ src = open(argv[1], O_RDONLY);
/* запросить размер исходного файла и права доступа к нему */ fstat(src, &stat_buf);
/* открыть файл назначения */ dest = open(argv[2], O_WRONLY|O_CREAT, stat_buf.st_mode); /* скопировать файл */ sendfile (dest, src, &offset, stat_buf.st_size);
/* закрыть файлы и выйти */ close(dest); close(src); } sendfile выругался с ошибкой EINVAL 8(((
Самое интересное - когда я, в попытке найти решение, неверно задал права в Open, создался файл SSH_PROCCESS_PID=7768 или каким-то таким (точно не помню давно было).
Причем запускал от обычного юзера. Это может быть уязвимостью, если атакующему надо выяснить пид сервера ссх..