我无法理解为什么这段代码不起作用。 Read()返回-1。 我像这样打开文件:
int descr = open(filepath, O_RDWR);
然后我试了一下:
void* bufi = malloc(blockSize);
void* bufj = malloc(blockSize);
//Loading to buffs
descr = lseek(descr, blockSize*i, SEEK_SET);
printf("%zd\n", read(descr, bufi, blockSize));
descr = lseek(descr, blockSize*j, SEEK_SET);
read(descr, bufj, blockSize);
//Writing from bufs to apropriate places in file
descr = lseek(descr, blockSize*j, SEEK_SET);
write(descr, bufi, blockSize);
descr = lseek(descr, blockSize*i, SEEK_SET);
write(descr, bufj, blockSize);
我尝试打开的文件用" chmod 777"如果这是一个问题。 提前谢谢。
答案 0 :(得分:1)
int descr = open(filepath, O_RDWR);
descr = lseek(descr, blockSize*i, SEEK_SET);
printf("%zd\n", read(descr, bufi, blockSize));
当您到达read
时,您已将descr
的值更改为返回的任何lseek
,这不太可能是有效的文件描述符。请勿使用descr
来保存lseek
返回的值。