系统函数调用C

时间:2017-03-18 09:04:51

标签: c unix operating-system

我无法理解为什么这段代码不起作用。 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"如果这是一个问题。 提前谢谢。

1 个答案:

答案 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返回的值。

相关问题