Я пытаюсь создать простую программу, которая создает файл, пишет в него, затем перемещает назад указатель и, наконец, читает его.
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
int main(){
int fd = creat("/home/alum/Class/ej",S_IRWXU);
if(fd==-1){
printf("Error %d\n",errno);
return 1;
}
ssize_t size = write(fd, "Halo",4);
if(size==-1){
printf("Error %d\n",errno);
return 1;
}
char string[50];
lseek(fd,0,SEEK_SET);
while((size = read(fd, string, 49)) >0){
printf("Read[%d]: %s\n",size,string);
}
printf("Size: %d\n",size);
if(size==-1){
printf("Error %d\n",errno);
return 1;
}
int c=close(fd);
if(c==-1){
printf("Error %d\n",errno);
return 1;
}
return 0;
}
Моя проблема в том, что "lseek", кажется, неработатьЯ всегда получаю размер «-1» при попытке прочитать, поэтому я предполагаю, что не возвращаюсь к началу файла ... Есть предложения?
Я видел некоторые вопросы, связанные с lseekно я не нашел решения своей проблемы.
РЕДАКТИРОВАТЬ:
Я изменил
int fd = creat("/home/alum/Class/ej",S_IRWXU);
на
int fd = open("/home/alum/Class/ej",O_CREAT|O_RDONLY|O_WRONLY|O_TRUNC);
, а также попытался
int fd = open("/home/alum/Class/ej",O_CREAT|O_RDONLY|O_WRONLY|O_TRUNC,0700);
Как и предлагалось, но я продолжаю получать ту же ошибку.